所以,我想從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