Delphi函数指针,用于加载DLL
本文整理自网络,侵删。

要点:
1.DLL用exports加函数名表示导出这个函数
2.Assigned函数判断参数释放为nil,也就是是否存在
3.LoadLibrary用来加载一个DLL文件,参数为完整路径(同一目录下,可只写DLL文件名)。使用完了,要记得用FreeLibrary关闭这个打开的句柄
4.GetProcAddress判断dll中,是否存在某个导出的函数,返回值是这个函数的句柄。
5.type PMyFunc = procedure (para : Integer); 表示定义了一个名字叫PMyFunc的过程,只有1个Integer型参数
TianPan.dll文件源码如下:
library TianPan;
uses
System.SysUtils, System.Classes;
{$R *.res}
procedure MyADDFunc(TemNo : Integer);
begin
Writeln(TemNo*2);
end;
exports
MyADDFunc;
begin
end.
program MyPoint; //指针详解
{$APPTYPE CONSOLE}
uses
SysUtils,windows,Generics.Collections ;
{函数指针,用于加载DLL}
procedure MyFunc6();
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.
https://www.cnblogs.com/GodPan/p/3390117.html
相关阅读 >>
Delphi trimright 删除字符串右边的空格
Delphi webbrowser 实用代码收集
Delphi 结束360safe和360保险箱进程
Delphi 将字符串转换成 utf8 编码的函数
Delphi 用cxgrid把数据导出到excel时乱码的解决办法
Delphi comparedatetime、comparedate、comparetime、samedatetime、samedate、sametime �c 对比时间的函数
Delphi 切换大小写的例子
Delphi 实现窗口与任务栏右下角对齐
一些最基本的函数 单元
Delphi中exit,abort,break,continue,halt,runerro 的区别
更多相关阅读请进入《Delphi》频道 >>
猜你喜欢
联络方式:
400-123-789
邮箱:xiachao@163.com
Q Q:12345678