delphi调用DLL中的函数,函数类型要一样吗?请大家看看
情况如下:
用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中定义的函数名称相同,参数不一样都可以调用啊。