所以,我想从Delphi XE2中的一个DLL中调用一个过程。 但程序不会分配。在Delphi XE2中调用dll的过程
我尝试了几个在互联网上找到的例子。 正在按预期加载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本身无法加载。 – 2014-11-14 20:13:36
oooohhh现在我明白了。我甚至没有注意到这一点。 – xaid 2014-11-14 22:02:58