我用C++ Builder2010撰寫的一個EXE,EXE將呼叫DLL的MDI子表單顯示在自己的MDI表單中。但是每次Debug到FreeLibrary時,就會出錯。查了很多,還是沒有解決.
呼叫代碼
DLL_File = LoadLibrary(FilePath.t_str());//DLL__File是定義在外部句柄
if(DLL_File != NULL)
{
TForm * __stdcall(*DLL_Func)(String,TComponent*) =
(TForm * (__stdcall*)(String,TComponent*))GetProcAddress(DLL_File,DLL_Entry.t_str());//FLL__Entry是DLL入口
if(DLL_Func != NULL)
{
FORM = DLL_Func(medt_UserName->Text.Trim(),this);//FORM是在外部定義的表單指標
FORM->Show();
}
else
{
ShowMessage("匯出函式例外");
}
}
else
{
ShowMessage("DLL加載失敗");
}
DLL代碼
入口
extern "C" __declspec(dllexport)TForm *__stdcall Material_Management(String _UserName,TComponent *Owner)
{
return new Tfrm_Main(Owner,_UserName);//這是直接從ccrun那里抄來的
}
uj5u.com熱心網友回復:
return new Tfrm_Main(Owner,_UserName);//是不是該有個delete 釋放資源啊
uj5u.com熱心網友回復:
frm_Main是MDI子表單,不能delete。uj5u.com熱心網友回復:
OnClose 處理 Action = caFree;uj5u.com熱心網友回復:
這個我做了但是在EXE里不能FreeLibrary
我現在不FreeLibrary了
結果沒事了
uj5u.com熱心網友回復:
你現在這個代碼和你提供給你的代碼差別很大,所以你的工程中有沒有問題,無法確定。轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/111524.html
標籤:基礎類
