- 1、本文档共61页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Windows程序设计教程 第12章 MFC动态链接库 动态链接库在Windows中非常重要,几乎所有的Windows API函数都包含在动态链接库中。 动态链接库有很多优点,如节省内存、支持多语种等,特别是当动态链接库(DLL)中的函数改变后,只要不是参数改变,调用这个函数的应用程序就不需要重新编译,这在编程时是十分有用的。 12.1 DLL基本理论 在Windows操作系统中,几乎所有的内容都是以DLL的形式存在的。 例如显示的字体和图标存储在GDI.DLL中;显示Windows桌面、处理用户输入所需要的代码被存储在User.DLL中;Windows编程所需要的大量API函数存储在Kernel.DLL中。 12.1.1 DLL基本概念 应用程序要从目标代码(.obj)外部引用函数,可以通过两种途径实现——静态链接和动态链接。 1.静态链接 该种方式下,链接程序首先对库文件(.lib)进行搜索,直到在某个库中,找到包含函数的对象模块为止。 然后,链接程序把这个对象模块复制到可执行文件(.exe)中。 链接程序负责维护对该函数的所有引用。 2.动态链接 该种方式下,链接程序同样先对库文件(.lib)进行搜索,直到在某个库中,找到所引用函数的输入记录为止。 动态链接库主要有如下优点: (1)系统中,同时运行的多个应用程序可以同时使用同一个动态链接库,它们在内存中共享DLL文件的一个拷贝。 这样做不仅节省了内存,而且减少了文件的动态交换。 (2)只要编写的应用程序的函数变量、返回值的类型、数量不发生变化,动态链接库的函数可以不用重新编译链接,直接使用。 (3)只要遵循一定的规则,不同语言编写的应用程序可以调用同一个动态链接库。 12.1.2 DLL的分类 微软的Visual C++支持3种DLL,它们分别是Non-MFC DLL(非MFC DLL)、Regular DLL(常规DLL)和Extension DLL(扩展DLL)。 1.Non-MFC DLL(非MFC DLL) 2.Regular DLL(常规DLL) 3.Extension DLL(扩展DLL) 12.1.3 DLL的工作原理 应用程序打开动态链接库时,把动态链接库的执行代码映射到进程的地址空间中,这里的进程包括了使用动态链接库的每一个进程。 而动态链接库中的数据,应用程序则不是通过映射方式获取,而是做了一个备份。 也就是说动态链接库所有的执行代码是共享的,但其中的变量,每个应用程序均备份了一份。 1.文件映射 2.引用表 3.内存分配 12.2 简单DLL示例 DLL现在越来越容易编写,Win32已经大大简化了其编程模式,并有许多来自AppWizard和MFC类库的支持。 本节将从一个简单的非MFC DLL实例入手,讨论DLL的一些主要编程思想。 12.2.1 一个简单的DLL 1.DLL的编程实现 2.DLL调用的编程实现 3.例程分析 12.2.2 导出函数 DLL文件中包含一个导出函数表,给出了DLL中每个导出函数的名字和标识号。 另外,函数表中还包含了DLL中函数的地址。 动态链接过程将在加载DLL模块时,动态建立一个函数调用与函数地址的对应表。 因此,如果没有改变导出函数的名字和参数序列,则重新编译或重建DLL文件时并不需要修改应用程序。 从DLL导出函数主要有两种方式: (1)创建模块定义文件(.def),并把导出函数名加入模块定义文件中; (2)在定义函数时使用_declspec(dllexport)关键字。 1.使用模块定义文件导出函数 模块定义文件是一个由多个语句组成的文本文件,根据不同的DLL,其模块定义语句可以不同,但一般来说必须包含以下语句: (1)LIBRARY语句。 (2)DESCRIPTION语句。 (3)EXPORTS语句。 2.使用_declspec(dllexport)关键字输出DLL 用户可以使用_declspec(dllexport)关键字输出DLL里的数据、函数、类等,这样就不再需要DEF文件了。 12
您可能关注的文档
- Windows Server2008案例教程 教学课件 作者 胡刚强 第九章 架设FTP服务器.ppt
- Windows Server2008案例教程 教学课件 作者 胡刚强 第六章 DNS服务器的安装与配置.ppt
- Windows Server2008案例教程 教学课件 作者 胡刚强 第七章 DHCP服务器.ppt
- Windows Server2008案例教程 教学课件 作者 胡刚强 第三章 Windows2008本地用户和组.ppt
- Windows Server2008案例教程 教学课件 作者 胡刚强 第十二章 活动目录.ppt
- Windows Server2008案例教程 教学课件 作者 胡刚强 第十三章 组策略管理.ppt
- Windows Server2008案例教程 教学课件 作者 胡刚强 第十一章 打印管理.ppt
- Windows Server2008案例教程 教学课件 作者 胡刚强 第十章 远程访问.ppt
- Windows Server2008案例教程 教学课件 作者 胡刚强 第四章 文件系统管理.ppt
- Windows Server2008案例教程 教学课件 作者 胡刚强 第五章 磁盘管理.ppt
- 2025届高考英语二轮复习《形容词和副词》课件.pdf
- 2025年新高考语文复习 文言文阅读——概括分析文意客观题 课件.pdf
- Windows Server网络管理项目教程(Windows Server 2022)(微课版)2.1 知识引入.pptx
- 2024-2025学年高一英语必修第一册(人教版)同步课堂 Unit 1 Teenage Life:Period 1 Listening and Speaking【配套课件】.pdf
- Windows Server网络管理项目教程(Windows Server 2022)(微课版)5.1 知识引入.pptx
- 2024年(新高考Ⅰ卷)英语阅读理解真题讲评 课件.pdf
- 2025届高考日语二轮复习《作文写作技巧》课件.pdf
- 2025届高考语文二轮复习《作文审题立意》课件.pdf
- Windows Server网络管理项目教程(Windows Server 2022)(微课版)5.7 拓展案例3:配置FTP站点用户隔离.pptx
- 2024年度SaaS安全调查报告.pdf
最近下载
- 神经外科介入神经放射治疗技术操作规范2023版.pdf VIP
- 《IE基础知识培训》PPT课件.ppt
- 神经系统体格检查演示课件.ppt
- 《财经法规与会计职业道德》习题答案及解析.pdf VIP
- 租赁合同模板下载打印5篇.docx
- 专题1.2 全等图形和全等三角形(分层练习)-2023-2024学年八年级数学上册基础知识专项突破讲与练(苏科版).docx VIP
- 《时间序列分析》PPT课件(全).pptx
- 电大一网一《网络存储技术》形考任务三:基于iSCSI传输的配置与管理形考任务三:基于iSCSI传输的配置与管理(1).docx VIP
- 学校“四个一”突发事件应急处置工作机制范文(6篇).pdf VIP
- 饱和聚酯培训资料.ppt
文档评论(0)