阅读:1952回复:9
DLL
在VC++中如何生成DLL文件?如何调用它?谢谢了.
|
|
沙发#
发布于:2005-05-26 20:57
找本vc的书上面都有。
简单的说DLL,就是提供一些公共函数入口,或者公共资源。 生成DLL的话,在建立项目时直接选DLL即可。 使用的话就是加载DLL,然后导入你要用的函数或资源。 |
|
|
板凳#
发布于:2005-05-27 11:47
可静态也可动态调用
看看书吧 |
|
|
地板#
发布于:2005-05-27 16:38
可是新建生成的DLL文件里面有一个def文件,里面的内容是控制的输出项,这样的调用方法只能有显示调用,但是如果想去掉def文件后在h文件中控制输出,那么除了在头文件中加入external “C”{}
后还需要什么修改啊? |
|
|
地下室#
发布于:2005-05-27 16:42
我看到EasyD12的文件中有一个头文件EasyD12。h文件中只是有输出项,就是External “C\"{}项后什么也没有,但是自动生成的。h文件中有好多的其他的控制输出项。该怎么办,或者是那位大侠教我怎么样显式调用啊?谢谢了
|
|
|
5楼#
发布于:2005-05-27 17:11
兄弟,还是找本书看看吧!
或者你用VC生成个dll的Sample,h文件中就不会只有输出项了。 |
|
|
6楼#
发布于:2005-05-27 18:07
我的导师叫我用Delphi编写一个应用程序,可是我根本没有接触过这个软件,他看了周立功的EasyD12的库使用后。告诉我说这个软件需要调用库,而不需要设计到底层的东西,他按照EasyD12附带的一个Word文档写的调用几个函数对端点进行读写操作控制LED灯的亮灭,可是那个只是别人提供的一个DLL和,h文件。我想作个修改可是调用方式不一样,显式调用还是不清除,所以我只能走修改dll文件的方法了,没有办法了
呵呵 能够教我怎么样在Delphi调用这个API函数吗? 谢谢了 |
|
|
7楼#
发布于:2005-06-07 17:39
这个倒没用过 :( |
|
|
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); |
|
9楼#
发布于:2005-06-24 10:02
汗~~
这个论坛发贴子真难,好不容易,才贴好。 |
|