加载dll,显示对话框之后不要立刻调用FreeLibrary;特别是非模态显示对话框时
先创建一个DLL工程,新增一个函数如下,然后生成DLL文件
extern "C" __declspec(dllexport) void Show() {
//这里显示一个窗口
}
新建一个WIN32工程,将DLL文件拷贝至程序运行目录。
定义一个全局的HINSTANCE hwnd;
程序初始化时调用hwnd = LoadLibrary(_T("MFCDLL.DLL"));
程序结束时调用FreeLibrary(hwnd);
新增一个按钮,点击执行以下内容。
typedef void (WINAPI *TESTDLL)();
if (hwnd == NULL) {
AfxMessageBox(_T("dll is not exist"));
return ;
}
TESTDLL lpproc = (TESTDLL) GetProcAddress(hwnd, "Show");
if (lpproc == (TESTDLL)NULL) {
AfxMessageBox(_T("function is not exit"));
return;
}
(*lpproc)(); //这样就调用了DLL中的Show函数