原文轉載自:http://blog.csdn.net/callbackfunc/article/details/7233894
本例通過新建一個MFC規則DLL并新建一個MFC對話框程序調用它,演示MFC規則DLL的創建及調用。(VS2010環境下實例代碼親測可編譯通過)
一、MFC規則DLL項目
1.創建MFC規則DLL


2.新建global.cpp(新建此文件沒有特殊意義,僅用于單獨添加創建并顯示對話框的代碼)并添加以下代碼:
- # include "stdafx.h"
- # include "dlldialog.h"
-
- extern "C" __declspec(dllexport) void ShowDlg(void)
- {
-
- AFX_MANAGE_STATE(AfxGetStaticModuleState());
-
- dlldialog dllDialog;
- dllDialog.DoModal();
- }
3.添加了一個對話框資源,并向其加入按鈕一個

4.雙擊3創建的DLL對話框資源,向該對話框添加dlldialog類

5.雙擊3對話框中創建的按鈕,為該按鈕添加代碼:
-
- void dlldialog::OnBnClickedButton1()
- {
- MessageBox(_T("調用DLL內部對話框成功!"));
- }
6.向dlldialog.h添加了一個頭文件,以解決找不到對話框資源的問題
- # include "resource.h"http://務必手動添加此條語句!否則在VC++2010環境下編譯會報“IDD_DIALOG1未定義的標識符”的錯
7.生成mfcdll
二、創建callmfcdll MFC對話框程序
1.創建MFC對話框程序以用于調用mfcdll生成的dll


2.添加了一個對話框資源,并向其加入按鈕一個

3.雙擊1對話框中創建的按鈕,以動態顯式調用生成的dll文件
- void CcallmfcdllDlg::OnBnClickedButton1()
- {
-
- typedef void (*lpCall)(void);
-
- HINSTANCE hDll;
-
- hDll = LoadLibrary(_T("mfcdll.dll"));
- if(NULL==hDll)
- {
- AfxMessageBox(_T("DLL加載失敗!"));
- }
-
- lpCall pShowDlg=(lpCall)GetProcAddress(hDll,"ShowDlg");
- if(NULL==pShowDlg)
- {
- AfxMessageBox(_T("DLL內部函數調用失敗!"));
- }
-
- pShowDlg();
- }
4.生成callmfcdll
三、測試運行
將mfcdll項目中編譯生成的mfcdll.dll放在callmfcdll項目中生成MFC程序的Debug文件夾下,雙擊打開生成的應用程序并點擊其對話框中間位置的按鈕,即發現調用成功
附:已將該項目的整套實例代碼打包上傳至本人的資源頻道(下載地址為:http://download.csdn.net/detail/callbackfunc/4032396),用戶可自行下載。
|