建立一个MFC扩展的DLL-project(假设是ABC类)
编写应用的对话框(假设是Dlg类)
在ABC.cpp中加入如下代码(假设用函数Show调用)
extern "C" __declspec(dllexport) void Show()
{
HINSTANCE save_hInstance = AfxGetResourceHandle();
//AfxSetResourceHandle(theApp.m_hInstance);
AFX_MANAGE_STATE(AfxGetAppModuleState());
subdll dlg;
dlg.DoModal ();
AfxSetResourceHandle(save_hInstance);
}
去掉CDlg.cpp中的 #include “ add additional includes here”这一行;在stdax.h中加入include "resource.h",再编译.
DLL制作完毕,将生成的DLL文件(假设是ABC.dll)复制到应用工程的目录下
在应用工程的view类中增加相应菜单函数,在该函数中复制代码:
typedef void (WINAPI * TESTDLL)();
HINSTANCE hmod;
hmod = ::LoadLibrary ("ABC.dll");
if(hmod==NULL)
{
AfxMessageBox("载入动态链接库ABC.dll失败!");
}
TESTDLL lpproc;
lpproc = (TESTDLL)GetProcAddress (hmod,"Show");
if(lpproc!=(TESTDLL)NULL)
(*lpproc)();
FreeLibrary(hmod);
编译,OK~~
如果以上程序在debug模式下不正确,但是在release下正确,要将Use MFC in a Shared DLL更改成为Use MFC in a Static Library