《DLL for Win32/MFC》Part 4, MFC DLL Object
来源:互联网 发布:温州淘宝店主猝死事件 编辑:程序博客网 时间:2024/06/03 15:58
《DLL for Win32/MFC》Part 4, MFC DLL Object
这次,我们要为工程创建MFC DLL核心文件,工程名为RMFCDLL.xxx。
1、打开Visual C++ Studio;
2、关闭任何打开的工作空间和所有文件;
3、在文件菜单下选择新建;
4、选择工程:MFC AppWizard(DLL);
5、给工程合适的名字,如:RDLLMFC,确保文件位置合适后点击确认;
6、选择”Regular DLL using shared MFC DLL” 选择按钮;
7、点击完成和确认。
接下来,我们要创建DLL声明的头文件:DLLCode.h。在文件菜单下选择新建,然后选择“C/C++ Header File",并命名为DLLCode。点击确认。
复制粘贴以下代码段:
/***************************************************************************File name :DLLCode.h该文件包含了MFC的对象,提示符,你需要使用一个MFC客户应用程序。提示:我们使用相同的头文件编译.DLL和.exe(应用程序)。头文件定义了一个在使用DLL时可以导出DLL对象的宏,另外,它可以在使用DLL时将DLL对象导入到应用程序中。如果我们定义了DLLDIR_EX(一个预处理标识符),那么预处理定义宏DLLDIR(一个助记符号:DLL导入/导出指示)会成为一个导出指令,同时也默认生成一个导入指令。***************************************************************************/#ifdef DLLDIR_EX #define DLLDIR __declspec(dllexport)#else #define DLLDIR __declspec(dllimport)#endif// This prevent the C++ compiler from using decorated (modified) names for the functions extern "C" { // Function DLLfun1, defined in the W32DLL DLL, writes to a console, not a window, // so, it is not appropriate to call it from a MFC Client. int DLLDIR DLLfun2(int); void DLLDIR DrawEllipse ( CRect, CDC* ); // a MFC function call};extern int DLLDIR DLLArg;class DLLDIR Dllclass{ public: Dllclass(); // Class Constructor ~Dllclass(); // Class destructor int Add(int, int); // Class function Add int Sub(int, int); // Class function Subtract int Arg;};
保存并关闭头文件。现在我们要创建DLLCode.cpp文件。在菜单文件下选择新建,然后选择“C++ Source File”。命名为:DLLCode。点击确认。
复制粘贴下列代码段:
/************************************************************************//* File name : DLLCode.cpp头文件,DLLCode.h中包含了所有DLL接口对象的原型 *//************************************************************************/#include "StdAfx.h"#include "DLLCode.h"int DLLfun2(int a) { return a<<1; };int DLLArg = 100;Dllclass::Dllclass() {};Dllclass::~Dllclass() {};int Dllclass::Add(int a, int b){ return a + b;};int Dllclass::Sub(int a, int b){ return a - b;};void DrawEllipse ( CRect rect, CDC *pDC ){CBrush brush;brush.CreateSolidBrush(RGB(0,0,255));pDC->SelectObject(&brush);pDC->Ellipse(&rect);};
现在,我们在“工程”目录下选择“设置”,选择C/C++栏。在“预处理程序定义”中附加或者插入“,DLLDIR_EX”(不需要引号)到文本框中,然后点击确认。
单击“!”键编译,创建,运行RDLLMFC项目。关闭”可执行调试对话“的对话框,提前执行DLL。那么我们就创建了Win32 DLL并导出了库。
/********************************************************************************************
注意:有时候会出现调用DLLArg不成功的情况,这是要有一下的步骤才能成功
分割线下面的片段是为了访问全局变量DLLArg。。为了把全局变量名加到DLL对象中,你必须加入一个新的文本文件到W32DLL工程中。
在文件菜单下点击新建,选择文本文件,命名为”RDLLMFC.def“,”def“文件扩展很重要。点击确定。
加入下列代码:
; RDLLMFC.def : Declares the module parameters for the DLL.LIBRARY "RDLLMFC"DESCRIPTION 'RDLLMFC Windows Dynamic Link Library'EXPORTS ; Explicit exports can go hereDLLfun2DrawEllipseDLLArg保存并重新编译RDLLMFC工程。复制(不是移动)\RDLLMFC\Debug\RDLLMFC.dll这个文件到MFCApp 工程目录下。运行应用程序,程序会找到变量”DLLArg“的。——此句是后面一节提到的,此处可忽略。
注意:不能导出类对象到DLL中,因为库对象随着头文件已经包含了那些信息了。
/********************************************************************************************
运行后的生成库文件:
- 《DLL for Win32/MFC》Part 4, MFC DLL Object
- 《DLL for Win32/MFC》Part 1, The Win32 DLL Object
- 《DLL for Win32/MFC》Part 5, DLL MFC Client Application
- 《DLL for Win32/MFC》Part 2, DLL Client Application One
- 《DLL for Win32/MFC》Part 3, DLL Client Application Two
- MFC DLL还是Win32 DLL?
- Win32 DLL中使用MFC
- win32 dll 和MFC dll的区别
- win32 dll 和MFC dll的区别
- MFC:Win32-Dll及MFC-Dll编写调用
- 在WIN32 DLL中使用MFC
- WIN32 DLL中使用MFC的问题
- 生成一个Win32非MFC的DLL
- 在WIN32 DLL中使用MFC
- 在WIN32 DLL中使用MFC
- MFC win32 Dll的创建和使用
- mfc dll
- MFC DLL
- (一) WebService 简介
- Fatal error: Call to undefined function mb_internal_encoding()
- ffmpeg之libfdk_aac
- Quartz2D 图像处理
- 干货分享:大数据分析及制作工具
- 《DLL for Win32/MFC》Part 4, MFC DLL Object
- (二) WebService-- JDK 发布WS服务
- C++构造函数和析构函数的总结
- 2dx 改变动画速率
- (三) WebService-- JDK 客户端调用
- linux gcc 源码安装
- MathJax basic tutorial and quick reference
- 一些图片
- Matlab 中一些符号的含义