VC++动态链接库详解:Non-MFC、Regular与Extension DLL
版权申诉
110 浏览量
更新于2024-09-10
收藏 8KB TXT 举报
"这篇文章主要介绍了在Visual C++中创建和使用的三种类型的DLL动态链接库:Non-MFCDLL、RegularDLL(常规DLL)和ExtensionDLL。这些DLL在不同的场景下有各自的特点和用途,适用于不同的项目需求。"
在VC++中,动态链接库(DLL)是一种共享代码的方式,允许多个应用程序共享同一份代码库,从而节省内存和提高效率。以下是三种类型的DLL及其特点和实现方法:
1. Non-MFCDLL:
Non-MFCDLL不依赖于MFC(Microsoft Foundation Classes)库,它是一个纯C或C++的DLL。这种类型的DLL通常用于需要跨平台或不使用MFC功能的项目。创建Non-MFCDLL时,你需要自定义入口点函数`DllMain`,这是DLL加载和卸载时调用的函数。在`DllMain`中处理初始化和清理工作。`DllMain`的参数包括模块句柄`hModule`、原因代码`ul_reason_for_call`以及保留的指针`lpReserved`。
2. RegularDLL:
RegularDLL是基于MFC的DLL,它扩展了MFC框架,并且包含一个CWinApp派生类。这种类型的DLL可以利用MFC的所有功能,如窗口、文档/视图架构等。创建RegularDLL时,需要包含MFC库,并在DLL中定义一个CWinApp派生类,该类处理DLL的初始化和清理。与Non-MFCDLL不同,RegularDLL不需要显式定义`DllMain`,因为MFC会自动处理。
3. ExtensionDLL:
ExtensionDLL是专门用于扩展MFC应用程序功能的DLL,它可以访问MFC的内部数据结构。ExtensionDLL通常用于添加新的控件、消息处理或其他特定于MFC的功能。它同样基于MFC,但与RegularDLL相比,它不需要一个完整的CWinApp实例,而是直接与MFC应用的全局状态交互。创建ExtensionDLL时,需要使用MFC的扩展DLL类库,并确保导出与MFC类相关的函数和对象。
在实现这些DLL时,需要使用特定的编译选项,例如`/MD`(多线程DLL运行时库)和`/LD`(生成DLL)。对于导出函数,可以使用`__declspec(dllexport)`关键字在DLL端声明,而在使用DLL的应用程序端则使用`__declspec(dllimport)`。导出类时,类成员函数也会自动导出。
选择哪种类型的DLL取决于你的项目需求。如果你的代码不依赖于MFC,Non-MFCDLL可能是最佳选择。如果需要利用MFC的强大功能,RegularDLL或者ExtensionDLL将更合适。正确理解和使用这些DLL类型可以帮助你更有效地管理和复用代码。
2008-07-30 上传
2013-05-13 上传
2010-08-15 上传
2021-03-15 上传
点击了解资源详情
2011-05-26 上传
2021-03-15 上传
点击了解资源详情
点击了解资源详情
2024-11-25 上传
lj_70596
- 粉丝: 101
- 资源: 3935
最新资源
- git客户端for for windows-2.34.1-x64版本
- Arduino-Core-Files:该存储库包含对一些核心Arduino文件的更改,我们发现这些更改有助于进行Mod开发
- 优化BFGS法_局部极小值_BFGS法_BFGS_
- 基于麻雀搜索算法优化的随机森林(SSA-RF)的数据回归预测(Matlab完整程序和数据)
- sample_crud.zip
- Pal, Peter's AutoIt Library:窗口,GUI,控件,字符串,数学,数据列表,对话框的库-开源
- todoapp:做应用程序但要稍加改动
- 往年学位英语试题+答案.rar
- nopedontcare-app
- 扁平产品设计网页模板是一款清爽大气的HTML5电子产品设计网站模板 .rar
- 2015年青藏高原主要湖泊shp数据
- Columns-开源
- Fan Test SystemV03_testreport_风扇全功能测试系统_labview_excel报表_测试报告_
- MooDb:嵌入式 NoSQL 数据库
- 行业分类-设备装置-电力用户侧负荷资源共享的海量微负荷管控平台及方法.zip
- docker-lizmap:码头工人lizmap