原文转载自: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"//务必手动添加此条语句!否则在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),用户可自行下载。
|