动态链接库教程(中文_版).pdfVIP

  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文档。上传文档
查看更多
什么是动态链接库?DLL 三个字母对于你来说一定很熟悉吧,它是 Dynamic Link Library 的缩写形式,动态链接库 (DLL) 是作为共享函数库的可执行文件。动态 链接提供了一种方法,使进程可以调用不属于其可执行代码的函数。函数的可执 行代码位于一个 DLL 中,该 DLL 包含一个或多个已被编译、链接并与使用它 们的进程分开存储的函数。DLL 还有助于共享数据和资源。多个应用程序可同 时访问内存中单个 DLL 副本的内容。 本文比较了Visual C++所支持的三种动态链接库,列出了各自不同的特点和应用 场合,详细地描述了三种动态链接库的建立和调用的方法。 关键字:动态链接库;导出函数;调用 引言 较大的应用程序都由很多模块组成,这些模块分别完成相对独立的功能,它 们彼此协作来完成整个软件系统的工作。在构造软件系统时,如果将所有模块的 源代码都静态编译到整个应用程序的EXE文件中,会产生一些问题:一个缺点是 增加了应用程序的大小,它会占用更多的磁盘空间,程序运行时也会消耗较大的 内存空间,造成系统资源的浪费;另一个缺点是,在编写大的EXE程序时,在每 次修改重建时都必须调整编译所有源代码,增加了编译过程的复杂性,也不利于 阶段性的单元测试;而且,一些模块的功能可能较为通用,在构造其它软件系统 时仍会被使用。 Windows系统平台上提供了一种完全不同的较有效的编程和运行环境,你可 以将独立的程序模块创建为较小的动态链接库(Dynamic Linkable Library,DLL) 文件,并可对它们单独编译和测试。在运行时,只有当EXE程序确实要调用这些 DLL模块的情况下,系统才会将它们装载到内存空间中。这种方式不仅减少了EXE 文件的大小和对内存空间的需求,而且使这些DLL模块可以同时被多个应用程序 使用。 动态链接库概述 动态链接库技术是Windows最重要的实现技术之一,Windows的许多新功能、 新特性都是通过DLL来实现的。其实,Windows本身就是由许多DLL组成的,它最 基本的三大组成模块Kernel、GDI和User都是DLL。 一般来说,DLL是一种磁盘文件,以.dll、.DRV、.FON、.SYS和许多以.EXE 为扩展名的系统文件都可以是DLL。它由全局数据、服务函数和资源组成,在运 行时被系统加载到进程的虚拟空间中,成为调用进程的一部分。如果与其它DLL 之间没有冲突,该文件通常映射到进程虚拟空间的同一地址上。DLL模块中包含 各种导出函数,用于向外界提供服务,Windows在加载DLL模块时将进程函数调用 与DLL文件的导出函数相匹配。DLL可以有自己的数据段,但没有自己的堆栈,DLL 模块需要的堆栈内存都是从运行进程的堆栈中分配出来的,使用与调用它的应用 程序相同的堆栈模式;一个DLL在内存中只有一个实例;DLL实现了代码封装性; DLL的编制与具体的编程语言及编译器无关。 动态链接库的分类 微软的Visual C++支持三种DLL,它们分别是Non-MFC Dll(非MFC动态库)、 Regular Dll(常规DLL)、Extension Dll(扩展DLL)。 1、Non-MFC DLL(非MFC动态库) 这种动态链接库指的是不用MFC的类库结构,直接用C语言写的DLL,其导出 的函数是标准的C接口,能被非MFC或MFC编写的应用程序所调用。如果建立的DLL 不需要使用MFC,那么应该建立Non-MFC DLL,因为使用MFC会增大用户库的大小, 从而浪费用户的磁盘和内存空间。 2、Regular DLL(常规DLL) 这种动态链接库和下述的Extension Dll一样,是用MFC类库编写的,它的一 个明显的特点是在源文件里有一个继承CWinApp的类(注意:此类DLL虽然从 CWinApp派生,但没有消息循环),被导出的函数是C函数、C++类或者C++成员函 数(注意不要把术语C++类与MFC的微软基础C++类相混淆),调用常规DLL的应用 程序不必是MFC应用程序,只要是能调用类C函数的应用程序就可以,它们可以是 在Visual C++、Delphi、Visual Basic、Borland C等编译环境下利用DLL开发应 用程序。常规DLL又可细分成静态链接到MFC和动态链接

文档评论(0)

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

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

1亿VIP精品文档

相关文档