代碼在下面,麻煩諸位大神指教:DLL代碼:.cpp:extern "C" __declspec(dllexport) void open(){AfxMessageBox(_T("錄入出錯(cuò)!"));CCombineFile dlg;dlg.DoModal();}.h:extern "C" __declspec(dllexport) void open();編譯通過(guò)后,將.dll復(fù)制到MFC的Debug,.lib、.h復(fù)制到MFC目錄下,.h中的dllexport也改成了dllimportMFC代碼:.cpp:#include "Combine.h"#pragma comment(lib,"dlltest.lib") extern "C" __declspec(dllimport) void open();void CTextDlg::OnOK() {// TODO: Add extra validation hereHINSTANCE hDll; //DLL句柄 hDll = LoadLibrary("Combine.dll"); if (NULL==hDll) { MessageBox("DLL加載失敗"); } FARPROC popen = GetProcAddress(hDll,"open"); if (NULL==popen) { MessageBox("DLL中函數(shù)尋找失敗"); } open();}
1 回答

幕布斯6054654
TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超7個(gè)贊
帶有對(duì)話框資源的MFC擴(kuò)展DLL,不能簡(jiǎn)單的使用LoadLibrary這種形式調(diào)用,因?yàn)檫@樣不能加載獲得DLL中的資源,而對(duì)話框是需要資源支持的(而不是簡(jiǎn)單的一個(gè)函數(shù)),這樣肯定失敗。
MFC擴(kuò)展DLL,帶有資源的要使用AfxLoadLibrary / AfxFreeLibrary 來(lái)調(diào)用。
- 1 回答
- 0 關(guān)注
- 238 瀏覽
添加回答
舉報(bào)
0/150
提交
取消