初学DLL,求大神指点 ,为什么MFC调用DLL没报错,但是也没有调用DLL中的函数?

代码在下面,麻烦诸位大神指教:
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也改成了dllimport

MFC代码:
.cpp:
#include "Combine.h"

#pragma comment(lib,"dlltest.lib") 
extern "C" __declspec(dllimport) void open();

void CTextDlg::OnOK() 
{
// TODO: Add extra validation here

HINSTANCE hDll; //DLL句柄  
hDll = LoadLibrary("Combine.dll");  
if (NULL==hDll)  
{  
MessageBox("DLL加载失败");  
}  

FARPROC popen = GetProcAddress(hDll,"open");  
if (NULL==popen)  
{  
MessageBox("DLL中函数寻找失败");  
}  

open();
}

繁花不似锦
浏览 122回答 1
1回答

幕布斯6054654

带有对话框资源的MFC扩展DLL,不能简单的使用LoadLibrary这种形式调用,因为这样不能加载获得DLL中的资源,而对话框是需要资源支持的(而不是简单的一个函数),这样肯定失败。MFC扩展DLL,带有资源的要使用AfxLoadLibrary / AfxFreeLibrary 来调用。
打开App,查看更多内容
随时随地看视频慕课网APP