要点:
1.DLL用exports加函数名表示导出这个函数
2.Assigned函数判断参数释放为nil,也就是是否存在
3.LoadLibrary用来加载一个DLL文件,参数为完整路径(同一目录下,可只写DLL文件名)。使用完了,要记得用FreeLibrary关闭这个打开的句柄
4.GetProcAddress判断dll中,是否存在某个导出的函数,返回值是这个函数的句柄。
5.type PMyFunc = procedure (para : Integer); 表示定义了一个名字叫PMyFunc的过程,只有1个Integer型参数
program MyPoint; //指针详解 {$APPTYPE CONSOLE} uses SysUtils,windows,Generics.Collections ; {函数指针,用于加载DLL} procedure MyFunc6(); {TianPan.dll文件源码如下: procedure MyADDFunc(TemNo : Integer); begin Writeln(TemNo*2); end; exports MyADDFunc; } type PMyFunc = procedure (para : Integer);//函数原型 var MyFunc : PMyFunc;//定义函数指针 MyHandle : HMODULE;//定义dll句柄 begin MyHandle := LoadLibrary('TianPan.dll'); if MyHandle > 0 then //如果dll存在 begin MyFunc := GetProcAddress(MyHandle, 'MyADDFunc');//获取地址 if Assigned(MyFunc) then //dll中函数存在 MyFunc(2) //调用函数 else Writeln('DLL中的MyADDFunc函数不存在!'); end else Writeln('DLL不存在!'); FreeLibrary(MyHandle); //释放句柄 end; {main主函数} begin MyFunc6(); Readln;//回车退出 end.
请发表评论