和下述的Extension Dlls一样,是用MFC类库编写的。明显的特点是 在源文件里有一个继承CWinApp的类。其又可细分成静态连接到MFC和动态连接到MFC上 的。但静态连接到MFC的动态连接库只被VC的专业般和企业版所支持。 ### Visual Studio 2005 制作DLL文件详解 #### 概述 本文将详细介绍如何使用Visual Studio 2005创建不同类型的DLL(动态链接库)文件,并重点讲解与MFC(Microsoft Foundation Classes)类库相关的DLL开发。根据描述,我们将探讨静态连接和动态连接到MFC的不同方式,并通过具体的示例来加深理解。 #### Visual Studio 2005 创建DLL文件 在开始之前,我们需要了解DLL文件的基本概念:DLL是一种可以在多个程序间共享代码的Windows文件类型。通过创建DLL文件,开发者可以实现代码重用,提高软件性能,并便于后续维护。 #### MFC 类库简介 MFC 是一个用于Windows应用程序开发的类库,它封装了Win32 API,简化了Windows编程。在Visual Studio 2005中,可以通过MFC类库来创建DLL文件,这有助于更好地管理和组织代码。 #### 不同类型的DLL 1. **Non-MFC DLL**: - 非MFC DLL不使用MFC类库,而是直接使用C语言或标准C++库来编写。 - 这种类型的DLL通常更轻量级且兼容性更好,适用于需要跨平台或多编译器环境使用的场景。 2. **Regular DLL (Extension DLLs)**: - 这类DLL使用MFC类库编写,具有扩展功能。 - 它们通常包含一个继承自`CWinApp`的类,这使得它们能够利用MFC的功能。 - 根据MFC的连接方式,这些DLL可以进一步分为静态连接和动态连接两种类型: - **静态连接到MFC**: - 此方法仅支持在Visual Studio的专业版和企业版中使用。 - 静态连接的DLL会将MFC库编译到DLL中,从而减少了对额外MFC库文件的需求。 - 但是这种方式可能会导致DLL体积较大。 - **动态连接到MFC**: - 动态连接则不会将MFC库编译到DLL中,而是依赖于外部MFC库文件。 - 这种方法使得DLL体积较小,但在部署时需要确保目标系统已安装相应的MFC运行时库。 #### 示例:创建Non-MFC DLL 以下步骤演示了如何在Visual Studio 2005中创建一个简单的Non-MFC DLL: 1. 打开Visual Studio 2005,选择“File” > “New” > “Project”。 2. 在项目类型中选择“Visual C++”,然后选择“Win32 Project”模板。 3. 命名项目为“Pow”并指定位置为`F:\vc2008dll`,点击“OK”。 4. 在“Win32 Application Wizard - Pow”中选择“DLL”作为应用程序类型,勾选“Export symbols”选项,然后点击“Finish”。 5. 生成头文件`pow.h`和源文件`Pow.cpp`: - `pow.h`: 定义`POW_API int pow(const int& x, const int& y);`函数原型。 - `Pow.cpp`: 实现`POW_API int pow(const int& x, const int& y)`函数。 6. 编译项目生成`pow.dll`和`pow.lib`文件。 #### 使用Non-MFC DLL 接下来,我们将演示如何在另一个项目中使用上述创建的Non-MFC DLL: 1. 创建一个新的Win32 Console Application项目,命名为“Test1”。 2. 将`pow.h`、`pow.dll`和`pow.lib`文件复制到`F:\c++\test1\test1`目录下。 3. 修改`test.Cpp`文件,添加必要的包含文件和调用`pow`函数的代码。 4. 编译并运行“Test1”。 #### 总结 通过以上步骤,我们不仅学习了如何使用Visual Studio 2005创建不同类型的DLL文件,还深入了解了与MFC类库相关的DLL开发技巧。无论是静态连接还是动态连接到MFC的方式,都能帮助开发者根据具体需求选择最适合的方案。此外,通过实际操作创建和使用Non-MFC DLL的例子,我们也进一步巩固了理论知识,增强了实践能力。
一、动态链接库(DLL)介绍
1. Non-MFC DLL:
指的是不用MFC的类库结构,直接用C语言写的DLL,其输出的函数一
般用的是标准C接口,并能被非MFC或MFC编写的应用程序所调用。
2. Regular DLL:
和下述的Extension Dlls一样,是用MFC类库编写的。明显的特点是
在源文件里有一个继承CWinApp的类。其又可细分成静态连接到MFC和动态连接到MFC上
的。但静态连接到MFC的动态连接库只被VC的专业般和企业版所支持。
动态链接库和MFC静态链接:这种DLL在链接过程中会将使用到得MFC类库复制一份到最终的DLL文件中
最终生成的DLL比较庞大且加载时不是很方便,但它可以在没有MFC类库DLL文件的机器上使用
动态链接库使用共享MFC DLL:这种DLL不会将用到的MFC类库复制到最终生成的DLL中,因此最终的DLL比较小,加载也很方便,但在没有MFC类库DLL文件的机器上无法使用,必须有MFC类库的支持
3.Extension DLL:
二、编写Non-MFC dll
1、打开visual studio 2008
2、file->new->Project…
3 、在弹出的“New project”窗口中,prject types子窗口中选择 visual C++,Templates子窗口中选择Win32 Project,然后在name处输入 pow,location处输入F:\vc2008dll,点击“OK”
4、在弹出的“win32 application wizard - pow”窗口中,点击“Next”;
5、在弹出的“win32 application wizard - pow”窗口中,Application type选项中选择DLL,Additional options选项中选择Export symbols,点击“Finish”
工程会自动生成对应的文件和代码,生成了pow.h和pow.cpp
6、在pow.h的文件末尾添加pow函数的声明
POW_API int pow(const int& x,const int& y);
//POW_API是自动生成的一个宏,它的作用是表明该函数是导入还是导出的
7、在Pow.cpp中添加pow函数的实现
POW_API int pow(const int& x,const int& y)
剩余9页未读,继续阅读
- 粉丝: 39
- 资源: 59
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- (源码)基于C++的ARMA53贪吃蛇游戏系统.zip
- (源码)基于Python和MQTT协议的IoT数据获取与处理系统.zip
- (源码)基于Arduino编程语言的智能硬件控制系统.zip
- (源码)基于Android的记账管理系统.zip
- (源码)基于Spring Boot框架的二手车管理系统.zip
- (源码)基于Spring Boot和Vue的分布式权限管理系统.zip
- (源码)基于Spring Boot框架的后台管理系统.zip
- (源码)基于Spring Boot和Vue的高性能售票系统.zip
- (源码)基于Windows API的USB设备通信系统.zip
- (源码)基于Spring Boot框架的进销存管理系统.zip