我在delphi6下测试下面的动态链接库library DllEntry;uses
  SysUtils,
  Windows,
  Dialogs,
  Classes;procedure DLLEntryPoint(dwReason: DWord);
begin
  case dwReason of
    DLL_PROCESS_ATTACH: SHOWMESSAGE('ATTCHING TO PROCESS');
    DLL_PROCESS_DETACH: SHOWMESSAGE('DETACHING FROM PROCESS');
    DLL_THREAD_ATTACH:  MESSAGEBEEP(0);
    DLL_THREAD_DETACH:  MESSAGEBEEP(0);
  end;
end;
             
{$R *.res}begin
  DllProc := @DLLEntryPoint;
  DLLEntryPoint(DLL_PROCESS_ATTACH);
end.发现 SHOWMESSAGE('DETACHING FROM PROCESS'); 并不会执行?有谁遇到过这种情况吗?

解决方案 »

  1.   

    procedure DLLEntryPoint(dwReason: DWord);
    begin
      case dwReason of
        DLL_PROCESS_ATTACH: MessageBox(0,'ATTCHING TO PROCESS','',0);
        DLL_PROCESS_DETACH: MessageBox(0,'ATTCHING TO DPROCESS','',0);
        DLL_THREAD_ATTACH:  MESSAGEBEEP(0);
        DLL_THREAD_DETACH:  MESSAGEBEEP(0);
      end;
    end;
      

  2.   

    在d6, d7都遇到過這個情況, 在在網上找了不少, 後來, 說是delphi的一個bug, 可以修改system.pas, 但比較麻煩!
      

  3.   

    procedure TForm1.Button1Click(Sender: TObject);
    begin
      h:=LoadLibrary('Project1.dll');
    end;procedure TForm1.Button2Click(Sender: TObject);
    begin
      FreeLibrary(h);
    end;
    测试一切OK啊;
      

  4.   

    问题解决了,一个delphi的bug,打了补丁后就好了,大概是把出口函数的指针丢了,跟了半天太麻烦了,解决了就算了。