我的DLL 如下:
procedure DLLEntryPoint(dwReason: Dword);far;
begin
        case dwReason of
                DLL_PROCESS_ATTACH: ShowMessage('Attaching to process.');
                DLL_PROCESS_DETACH: ShowMessage('Detaching to process.');
        end;
end;function Sum(n1: Integer;n2: Integer): Integer;Stdcall;
begin
        Result := n1+n2;
end;exports
        Sum;begin
        DllProc := @DLLEntryPoint;
        DLLEntryPoint(DLL_PROCESS_ATTACH);
end.我调用时用动态调用,LoadLibrary;
当用FreeLibrary释放时,为什么不执行:DLL_PROCESS_DETACH: ShowMessage('Detaching to process.')?

解决方案 »

  1.   

    我以前也為這個問題搞得費了不少時間, 老是發覺有資源沒有正确釋放!!!
    後來在網上看到一篇論述, 說這是delphi的一個bug, 釋放時并沒有正确調用
    DLL_PROCESS_DETACH, 可修改 system.pas !
    d5 - d7都有這個問題!
    我也測試過一些自稱是通過的代碼, 但發現問題依然存在!!
    但我覺得比較麻煩, 就自己用另外方法處理了!!
      

  2.   

    //Mine
    procedure DLLMain(Reason:integer);
    begin
      Case Reason of
        DLL_PROCESS_ATTACH:
        begin
      Application.CreateForm(TData, Data);
      end;
        DLL_PROCESS_DETACH:
        begin
          Data.Free ;
        end;
        DLL_THREAD_ATTACH: begin end;
        DLL_THREAD_DETACH: begin end;
      End;
    end;
      

  3.   

    请问: juwuyi(我有,我可以) 你这个好像跟我的没什么区别嘛!肯定是一样的结果了!