代碼在下面,麻煩諸位大神指教:DLL代碼:.cpp:extern "C" __declspec(dllexport) void open(){AfxMessageBox(_T("錄入出錯!"));CCombineFile dlg;dlg.DoModal();}.h:extern "C" __declspec(dllexport) void open();編譯通過后,將.dll復制到MFC的Debug,.lib、.h復制到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中函數尋找失敗"); } open();}
1 回答

幕布斯6054654
TA貢獻1876條經驗 獲得超7個贊
帶有對話框資源的MFC擴展DLL,不能簡單的使用LoadLibrary這種形式調用,因為這樣不能加載獲得DLL中的資源,而對話框是需要資源支持的(而不是簡單的一個函數),這樣肯定失敗。
MFC擴展DLL,帶有資源的要使用AfxLoadLibrary / AfxFreeLibrary 來調用。
- 1 回答
- 0 關注
- 244 瀏覽
添加回答
舉報
0/150
提交
取消