【发布时间】:2014-11-14 18:23:36
【问题描述】:
所以,我试图从 Delphi XE2 中的 DLL 调用一个过程。 但程序不会分配。
我尝试了几个在 Internet 上找到的示例。 DLL 正在按预期加载。 导出正确写入。
一切似乎都很好,但仍然没有成功。
这是怎么回事?
我的代码如下
type
TStarter = procedure; stdcall;
...
fTheHookStart: TStarter;
...
procedure TForm1.LoadHookDLL;
begin
LogLn('Keyboard Hook: Loading...');
// Load the library
DLLHandle := LoadLibrary('thehookdll.DLL');
// If succesful ...
if Handle <> 0 then
begin
LogLn('Keyboard Hook: DLL load OK!');
LogLn('Keyboard Hook: assigning procedure ...');
fTheHookStart := TStarter(GetProcAddress(DLLHandle, 'StartTheHook'));
if @fTheHookStart <> nil then
begin
LogLn('Keyboard Hook: procedure assignment OK!');
LogLn('Keyboard Hook: Starting...');
fTheHookStart;
end
else
begin
LogLn('Keyboard Hook: procedure assignment FAIL!');
FreeLibrary(DLLHandle);
if Handle <> 0 then LogLn('Keyboard Hook: DLL free OK!') else LogLn('Keyboard Hook: DLL free FAIL!');
end;
end
else
begin
LogLn('Keyboard Hook: DLL load FAIL!');
end;
end;
【问题讨论】:
-
假设您发布的代码正是您正在测试的内容...您设置了 DLLHandle,但随后测试了
Handle <> 0...也许是您的 DLL 本身无法加载。 -
ooohhh 现在我明白了。我什至没有注意到这一点。
标签: windows delphi dll delphi-xe2 procedure