Delphi调用DLL接口的过程大概分为以下几个步骤:
function MyFunction(param1: Integer; param2: PChar): Integer; stdcall; external 'mydll.dll';
这个声明定义了一个名为MyFunction的函数,它在mydll.dll中实现,有两个参数,一个是整数类型,一个是字符串类型。
加载DLL:使用LoadLibrary函数加载DLL,获取一个句柄,以便后续可以调用DLL中的函数。
hDll: THandle;
begin
hDll := LoadLibrary('mydll.dll');
if hDll <> 0 then
begin
// DLL加载成功
begin
// DLL加载失败
在这个例子中,我们使用LoadLibrary函数加载名为mydll.dll的DLL,并将返回值保存在hDll变量中。如果DLL加载成功,hDll将是一个非零值,否则为0。
调用DLL函数:使用GetProcAddress函数获取DLL中函数的地址,并将地址转换为一个函数指针。然后,可以像调用任何其他函数一样调用DLL函数。
TMyFunction = function(param1: Integer; param2: PChar): Integer; stdcall;
hDll: THandle;
MyFunction: TMyFunction;
result: Integer;
begin
hDll := LoadLibrary('mydll.dll');
if hDll <> 0 then
begin
@MyFunction := GetProcAddress(hDll, 'MyFunction');
if @MyFunction <> nil then
begin
result := MyFunction(123, 'test');
// 调用成功,result保存了函数返回值
begin
// 获取函数地址失败
FreeLibrary(hDll);
begin
// DLL加载失败
在这个例子中,我们首先定义了一个类型为TMyFunction的函数指针,用于保存获取到的DLL函数地址。然后使用GetProcAddress函数获取MyFunction函数的地址,并将其转换为函数指针。最后,可以像调用任何其他函数一样调用MyFunction函数,并将返回值保存在result变量中。
总之,调用DLL函数的过程包括定义函数声明、加载DLL和调用DLL函数三个步骤。