用MFC寫對話框形式的DLL並用程序進行調用方法

 

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章