建立一個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