- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第12章动态接库编程
第12章 动态链接库编程 在Windows操作系统环境中,动态链接库技术有着广泛的应用。操作系统的核心功能、系统服务、应用程序服务等多数是由一组动态链接库实现的。在Windows应用程序中使用动态链接库有很多的好处。最主要的一点说是它可以使得多个应用程序共享一段代码,从而可以大幅度的降低应用程序的资源开销,同时很缩小了应用程序的最终执行代码的大小。 12.1 基本概念 在开发和使用动态链接库之前,有必要了解一下动态链接库的相关概念。只有了解了动态链接库的结构和工作机制,才能灵活有效地开发和使用它。 12.1.1 动态链接库的概念 动态链接库(DLL,Dynamic-Link Library)也是一种可执行文件,只不过它不能像普通的EXE文件那样可以直接运行,而是用来为其它可执行文件(包括EXE文件和其它DLL)提供共享函数库。使用DLL的应用程序可以调用DLL中的导出函数,不过在应用程序本身的执行代码中并不包含这些函数的执行代码,它们经过编译和链接之后,独立的保存在DLL中。与动态链接库相对应,还有一种称为静态连接库的函数库,二者的主要区别就是在使用方法上。 12.1.2 动态链接库的优点 DLL在Windows编程中得到了广泛的应用。Windows API函数中的相当部分就是由一组DLL所提供的,这些DLL从安装Windows起就存在于系统中了。事实上,前面几章早就在使用DLL进行编程了,只不过,所使用的DLL都是现成的,并且所有调用DLL的操作都由Visual C++的编译和链接程序替用户完成了。 12.1.3 Visual C++6.0可开发的DLL Visual C++ 6.0支持多种DLL,包括:非MFC DLL、静态链接到MFC的常规DLL、动态链接到MFC的常规DLL和MFC扩展DLL。 其中,非MFC DLL也称为Win32 DLL,其内部不采用MFC类库结构,导出函数一般为标准的C接口。它能被非MFC或MFC编写的应用程序所调用。(具体内容请参照本书) 12.1.4 DLL文件的组成 一个发布的可供使用的动态链接库,一般包含三个文件:包含文件(.H)、导入库文件(.LIB)和实际代码文件(.DLL)。(具体内容请参照本书) 12.2 DLL的创建与调用 本节以非MFC DLL(Win32 DLL)为例来讲解DLL的结构和导出方法,并介绍创建和使用DLL的方法和步骤。 12.2.1 Win32 DLL的创建 与MFC应用程序框架的创建相似,使用AppWizard可以方便地创建一个Win32 DLL框架。本节将利用AppWizard创建一个Win32 DLL,该DLL提供了一个导出函数FactorialFun,实现正整数的阶乘运算(如,5!=5*4*3*2*1)。(具体内容请参照本书) 12.2.2 DLL的导出 DLL文件和EXE文件都属于可执行文件,不同的是DLL文件包含了一个导出表,导出表中给出了可以从DLL中导出的所有函数的名字。外部可执行程序只能访问包括在DLL的导出表中的函数,DLL中的其它函数是私有的,不能为外部可执行程序所访问。 从DLL中导出函数有两种方法:在定义函数时使用关键字_declspec(dllexport);在创建DLL时使用模块定义(.DEF)文件。(具体内容请参照本书) 12.2.3 应用程序链接DLL 链接应用程序到DLL也有两种方法:隐式链接和显式链接。 隐式链接又称为静态加载。如果应用程序使用了隐式链接,操作系统在加载应用程序的同时加载应用程序所使用的DLL。显式链接又称为动态加载。使用动态加载的应用程序必须在代码中明确的加载所使用的DLL,并使用指针来调用DLL中的导出函数,在使用完毕之后,应用程序必须卸载所使用的DLL。(具体内容请参照本书) 12.3 MFC常规DLL的创建与使用 前面已经介绍了普通DLL(Win32 DLL)的开发和使用,下面将要介绍基于MFC的DLL的开发。MFC DLL能够使用MFC类库,从而能在MFC的帮助下开发出功能强大的模块。 基于MFC的DLL有MFC常规DLL和MFC扩展DLL,本节将介绍MFC常规DLL的创建与使用。 12.3.1 基本概念 MFC常规DLL,顾名思义,其包含两方面的含义。首先,它是MFC DLL,即可以在DLL的内部使用MFC类库。其次,它是常规的,即它不同于MFC扩展DLL,在其内部虽然可以使用MFC,但它与应用程序的接口不能是MFC,如它不能导出一个MFC类的派生类。 MFC常规DLL有两种类型:静态链接到MFC库的规则DLL(Regular DLL with MFC statically linked)和动态链接到MFC库的规则DLL(Regular DLL using shared M
您可能关注的文档
- 第11讲八年级下uits3-4.ppt
- 第11讲vhdl识符数据.ppt
- 第11讲tp服务.ppt
- 第11价格决策.ppt
- 第11讲道客巴案例分析.ppt
- 第11讲传层2.ppt
- 第11讲不等选讲.ppt
- 第11讲电感应规律及其应用.ppt
- 第11建筑施工图.ppt
- 第11讲回分析.ppt
- 2026年及未来5年临床检测仪器项目市场数据调查、监测研究报告.docx
- 2025年事业单位工勤技能-新疆-新疆计量检定工二级(技师)历年参考题典型考点含答案解析.docx
- 2025年教师职称-上海-上海教师职称(基础知识、综合素质、小学信息技术)历年参考题典型考点含答案解.docx
- 2026年及未来5年消声减荷阀项目市场数据调查、监测研究报告.docx
- 2026年及未来5年皮革整烫机项目市场数据调查、监测研究报告.docx
- 2026年及未来5年溴氯海因项目市场数据调查、监测研究报告.docx
- 2026年及未来5年车用冰箱项目市场数据调查、监测研究报告.docx
- 2026年及未来5年复合型气体分析仪项目市场数据调查、监测研究报告.docx
- 2026年及未来5年超高性能分散剂项目市场数据调查、监测研究报告.docx
- 2025年事业单位工勤技能-福建-福建环境监测工三级(高级工)历年参考题典型考点含答案解析.docx
最近下载
- 2025天津大学管理岗位集中招聘15人备考题库必考题.docx VIP
- DG_TJ08-16-2025 扣件式钢管模板垂直支撑系统安全技术标准 .pdf VIP
- 国开《农村公共管理》作业考核答案.docx VIP
- 2025年黑龙江省红十字会系统事业单位人员招聘笔试备考题库及答案解析.docx VIP
- GB_T 50002-2013 建筑模数协调标准.docx VIP
- 小学《丑小鸭》课件PPT.pptx
- GCP质量控制与保证医学课件.pptx VIP
- 2025年嫩江市招聘农垦社区工作者(88人)模拟试卷及答案详解(全优).docx VIP
- 《车载点烟器》课件.pptx VIP
- 2025年终极押题范文6篇(题目+写作指导).doc VIP
原创力文档


文档评论(0)