DLL(Dynamic Link Library)是Windows操作系统中的一个重要特性,它允许将多个函数和其他资源打包到一个单独的库中,供多个程序共享使用,从而减少内存占用和提高效率。本篇文章将详细探讨DLL的创建以及函数调用规则。 DLL分为几种类型: 1. Non-MFC DLL:这类DLL不依赖于MFC(Microsoft Foundation Classes)库,而是直接使用C语言编写,输出的函数通常采用标准C接口,因此可以被非MFC或MFC应用调用。它们的函数声明通常使用`extern "C"`以避免C++的名称修饰问题。 2. Regular DLL:这是使用MFC类库编写的DLL,特点是源文件中包含一个继承自CWinApp的类。它可以进一步分为静态连接到MFC和动态连接到MFC的。静态连接的DLL只在VC的专业版和企业版中支持,其输出函数可供任何Win32程序使用,包括MFC程序。函数声明一般形式为`extern "C" EXPORT YourExportedFunction()`。如果缺少`extern "C"`,则只能从C++代码中调用。 3. Extension DLL:这类DLL用于重用从MFC继承的类,输出的函数只能被使用MFC且动态链接到MFC的应用程序调用。它们使用MFC的动态链接版本创建,且需要自行编写DLLMain函数进行初始化和清理。 DLL函数调用规则: 在DLL中,函数调用的正确性至关重要。对于使用MFC的Regular DLL,所有从DLL导出的函数应以`AFX_MANAGE_STATE(AfxGetStaticModuleState( ))`开头,确保MFC模块状态的正确切换。对于Extension DLL,由于没有从CWinApp派生的对象,需要自行编写DLLMain函数并调用`AfxInitExtensionModule`初始化模块,同时需要处理CRuntimeClass对象和资源的初始化。 DLLMain函数是每个DLL的入口点,负责初始化和结束操作。当进程或线程加载或卸载DLL时,DLLMain会被调用,根据`ul_reason_for_call`参数执行相应的操作。例如,`DLL_PROCESS_ATTACH`表示进程加载,`DLL_THREAD_ATTACH`表示线程加载,`DLL_THREAD_DETACH`和`DLL_PROCESS_DETACH`分别对应线程和进程的卸载。值得注意的是,通过`TerminateProcess`或`TerminateThread`结束进程或线程时,不会调用DLLMain。 使用DLL时,调用方需确保正确管理DLL的生命周期,例如,在调用DLL的函数之前先进行初始化,并在不再需要时释放资源。对于Extension DLL,调用方的CWinApp派生类通常会在`InitInstance`中调用DLL的初始化函数。 DLL的创建与函数调用规则涉及MFC的使用、DLL类型的选择以及入口函数的编写等多个方面,理解这些规则是开发高效、稳定的Windows应用程序的关键。开发者需要根据具体需求选择合适的DLL类型,并遵循相应的函数调用规范,以实现代码的复用和优化。
![](https://csdnimg.cn/release/download_crawler_static/1384879/bg1.jpg)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![docx](https://img-home.csdnimg.cn/images/20241231044901.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![7z](https://img-home.csdnimg.cn/images/20241231044736.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![docx](https://img-home.csdnimg.cn/images/20241231044901.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![docx](https://img-home.csdnimg.cn/images/20241231044901.png)
![7z](https://img-home.csdnimg.cn/images/20241231044736.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)
![7z](https://img-home.csdnimg.cn/images/20241231044736.png)
![avatar](https://profile-avatar.csdnimg.cn/ac5bd60ae66c4396a3a6af78d4a051af_tomorrowsprogress.jpg!1)
- 粉丝: 15
- 资源: 49
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![voice](https://csdnimg.cn/release/downloadcmsfe/public/img/voice.245cc511.png)
![center-task](https://csdnimg.cn/release/downloadcmsfe/public/img/center-task.c2eda91a.png)
最新资源
- 项目借鉴NASM英文汇编编译器完成部分中文汇编NAJC转义,并以此为基础通过中文汇编实现操作系统加载.zip
- Go语言高级编程》开源图书,涵盖CGO、Go汇编语言、RPC实现、Protobuf插件实现、Web框.zip
- -books- 《Go语言高级编程》开源图书,涵盖CGO、Go汇编语言、RPC实现、Protobuf.zip
- 操作系统实验一,汇编实现斐波那契数列(包括大数相加问题).zip
- 计算机系统-源代码解析器-从源代码-汇编-二进制.zip
- 运用汇编语言,完成智慧交通系统的程序,实现模拟8个路口的交通通行,获西安邮电大学第八届汇编语言竞赛一.zip
- 正式开始CSAPP了,有点儿小兴奋。据说这本书是国外许多著名大学的经典教材,深入讲解了计算机系统的底.zip
- Linux中的操作系统实验c++代码及少量的汇编代码.zip
- 大三-微机接口-汇编语言-学生管理系统.zip
- 微机原理与系统 汇编实验.zip
- 汇编程序设计 ——学生成绩管理系统.zip
- 使用SpringBoot开发的MIPS汇编器,计算机系统原理课程大作业之一.zip
- 超过1000本的计算机经典书籍、个人笔记资料以及本人在各平台发表文章中所涉及的资源等。书籍资源包.zip
- 上海交通大学 SE118 计算机系统基础(汇编).zip
- Nasm 汇编写操作系统.zip
- OD反汇编引擎精简版,只适合x86系统,可嵌入驱动程序。.zip
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback-tip](https://img-home.csdnimg.cn/images/20220527035111.png)
![dialog-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/green-success.6a4acb44.png)
评论0