加载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函数