delphi调用DLL中的函数,函数类型要一样吗?请大家看看

wzg1031 wzg1031 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
情况如下:
用delphi做一DLL,里面有一输出函数;定义如下:
function GetMax: integer; stdcall;
实现代码:
function GetMax: Integer;
begin
Result := 100;
end;
工程文件:
library Project1;

uses
SysUtils,
Classes,
Unit1 in 'Unit1.pas' {Form1};

exports
GetMax;

{$R *.res}

begin
end.

调用DLL的代码如下:
procedure button1OnClick(sender: TObject);
var
a: function(b: PChar; c: boolean): Integer; // 此函数类型与DLL中定义的函数参数个数不一样,但调用没有问题,不知道是什么原因?
max: integer;
LibHandle: THandle;
begin
LibHandle := LoadLibrary('DLL路径'); // 成功
try
if LibHandle <> 0 then
begin
@a := GetProcAddress(LibHandle, 'GetMax'); // 取函数地址
max := a('',true); // 成功,取得100,为什么,DLL中定义的方法是没有参数的啊?
end;
finally
FreeLibrary(LibHandle);
end;
end;

请各位高手帮忙解释下,小弟搞不懂是什么原因,为什么只要函数名称和DLL中定义的函数名称相同,参数不一样都可以调用啊。
...全文

相关推荐

评论 28
收藏 已收藏
分享
返回顶部
wzg1031
Delphi 5,944 成员 262,941 内容