转贴:
调用DLL有两种方法,一种是在应用程序装载时调用,另一种是在应用程序运行时调用。
首先介绍装载时DLL的调用:
(1)装载时调用DLL
在调用DLL的Pas文件中,对DLL函数进行外部声明,
声明应位于Implementation的Uses语句后,形式如下:
Implementation
Uses Dialogs;
Function Name(argment):Boolean;far;External 'Call?Name';
其中External关键字后面的引号内的字串是DLL的文件名。
声明以后即可在Pas文件任何地方引用DLL函数。
装载时调用DLL的优点是速度较快,程序间也可共享代码。
(2)运行时调用DLL
DLL的另一种调用方法是在运行时调用。
要调用到Windows的API函数:LoadLibrary,GetProcAddress等。
主要用于调用DELPHI和其它语言,特别是C++编译的DLL。
假定你的DLL包括一个函数:
Function MyFunc(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('路径
LL文件名');{如lhnd:=Loadlibrary('c:/aa/bb.dll');
aptr:=GetprocAddress(lhnd,'Myfunc');
下面可直接调用DLL了:
s:=TMyfunc(bptr)(60);{根据函数填相应的变量参数}
调用完以后,用FreeLibrary释放DLL占用的内存:
FreeLibrary(lhnd);