x810421
驱动牛犊
驱动牛犊
  • 注册日期2004-10-08
  • 最后登录2006-04-15
  • 粉丝0
  • 关注0
  • 积分42分
  • 威望7点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1952回复:9

DLL

楼主#
更多 发布于:2005-05-26 10:40
在VC++中如何生成DLL文件?如何调用它?谢谢了.
lsvine
驱动小牛
驱动小牛
  • 注册日期2005-03-09
  • 最后登录2009-10-30
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望57点
  • 贡献值0点
  • 好评度37点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-05-26 20:57
找本vc的书上面都有。
简单的说DLL,就是提供一些公共函数入口,或者公共资源。
生成DLL的话,在建立项目时直接选DLL即可。
使用的话就是加载DLL,然后导入你要用的函数或资源。
天行健,君子以自强不息 地势坤,君子以厚德载物
qy_rain
驱动牛犊
驱动牛犊
  • 注册日期2005-05-09
  • 最后登录2008-07-11
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-05-27 11:47
可静态也可动态调用
看看书吧
>>>>Rain<<<<
qiaojun_love
驱动牛犊
驱动牛犊
  • 注册日期2005-01-17
  • 最后登录2005-05-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-05-27 16:38
可是新建生成的DLL文件里面有一个def文件,里面的内容是控制的输出项,这样的调用方法只能有显示调用,但是如果想去掉def文件后在h文件中控制输出,那么除了在头文件中加入external “C”{}
后还需要什么修改啊?
忘记别人的怀记着别人的好
qiaojun_love
驱动牛犊
驱动牛犊
  • 注册日期2005-01-17
  • 最后登录2005-05-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2005-05-27 16:42
我看到EasyD12的文件中有一个头文件EasyD12。h文件中只是有输出项,就是External “C\"{}项后什么也没有,但是自动生成的。h文件中有好多的其他的控制输出项。该怎么办,或者是那位大侠教我怎么样显式调用啊?谢谢了
忘记别人的怀记着别人的好
maqian
驱动中牛
驱动中牛
  • 注册日期2002-08-07
  • 最后登录2014-09-16
  • 粉丝2
  • 关注1
  • 积分12分
  • 威望120点
  • 贡献值0点
  • 好评度32点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2005-05-27 17:11
兄弟,还是找本书看看吧!
或者你用VC生成个dll的Sample,h文件中就不会只有输出项了。
五花马,千金裘,呼儿将出换美酒。 我不喝酒,喝可乐。
qiaojun_love
驱动牛犊
驱动牛犊
  • 注册日期2005-01-17
  • 最后登录2005-05-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2005-05-27 18:07
我的导师叫我用Delphi编写一个应用程序,可是我根本没有接触过这个软件,他看了周立功的EasyD12的库使用后。告诉我说这个软件需要调用库,而不需要设计到底层的东西,他按照EasyD12附带的一个Word文档写的调用几个函数对端点进行读写操作控制LED灯的亮灭,可是那个只是别人提供的一个DLL和,h文件。我想作个修改可是调用方式不一样,显式调用还是不清除,所以我只能走修改dll文件的方法了,没有办法了
呵呵
能够教我怎么样在Delphi调用这个API函数吗?
谢谢了
忘记别人的怀记着别人的好
lsvine
驱动小牛
驱动小牛
  • 注册日期2005-03-09
  • 最后登录2009-10-30
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望57点
  • 贡献值0点
  • 好评度37点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2005-06-07 17:39

能够教我怎么样在Delphi调用这个API函数吗?
谢谢了

这个倒没用过 :(
天行健,君子以自强不息 地势坤,君子以厚德载物
dreamday
驱动牛犊
驱动牛犊
  • 注册日期2005-05-31
  • 最后登录2009-11-20
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2005-06-24 09:59
To qiaojun_love :
在Delphi应用程序中使用DLL
  调用DLL有两种方法,一种是在应用程序装载时调用,另一种是在应用程序运行时调
用。首先介绍装载时DLL的调用:
  (1)装载时调用DLL
Pas文件中,对DLL函数进行外部声明,声明应位于Implementation的Uses语句后,形式
如下:
  Implementation
  UsesDialogs;
    FunctionName(argment):Boolean;far;External'CallName';
  其中External关键字后面的引号内的字串是DLL的文件名。声明以后即可在Pas文件
任何地方引用DLL函数。
  装载时调用DLL的优点是速度较快,程序间也可共享代码。
    例:Procedure EW_GetImagePara(var iImageWidth: word; var iImageHeight:word); stdcall; external 'your.dll';
    (2)运行时调用DLL
  DLL的另一种调用方法是在运行时调用。要调用到Win dows的API函数:loadlibrary,
Getprocaddress等。主要用于调用DELPHI和其它语言,特别是C++编译的DLL。
  假定你的DLL包括一个函数:
  FunctionMyFunc(aparam:word):string;export;
  首先在程序Type类型声明处加入一句:
  Type
  TMyfunc function(aparam:word):string;
  此句的作用如同C++中声明的函数指针。
  然后定义如下变量∶
  Var
  aptr:TFarproc;
  lhnd:THandle;
  s:string;
  其中Aptr,lhnd两变量声明必须有,s是DLL函数返回值,视情况而定。
  在调用DLL处加入如下语句进行DLL装载:
  lhnd:Loadlibrary('路径\DLL文件名');{
   如lhnd:Loadlibrary('c:\aa\bb.dll');
  aptr:GetprocAddress(lhnd,'Myfunc');
  下面可直接调用DLL了:
  s:TMyfunc(bptr)(60);{根据函数填相应的变量参数}
  调用完以后,用FreeLibrary释放DLL占用的内存:
  FreeLibrary(lhnd);
dreamday
驱动牛犊
驱动牛犊
  • 注册日期2005-05-31
  • 最后登录2009-11-20
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2005-06-24 10:02
汗~~
这个论坛发贴子真难,好不容易,才贴好。
游客

返回顶部