在Delphi XE2中从dll调用过程

xai*_*aid -2 windows delphi dll procedure delphi-xe2

所以,我试图从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;
Run Code Online (Sandbox Code Playgroud)

Tom*_*erg 6

一个错误是你在加载dll时分配DllHandle,但是你检查Handle <>是否为nil.句柄实际上是你的表单句柄,其中的句子不是零.如果加载成功则无关紧要,但如果失败,则会出现错误的日志记录.由于您还有一些日志功能,日志显示什么?