动态链接库编程-找源代码程序员.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
动态链接库编程-找源代码程序员

第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

文档评论(0)

ailuojue + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档