- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
21动态链接库
动态链接库 壹佰软件开发小组 整理编
译
动态链接库(也称为DLL)是Microsoft Windows最重要的组成要素之一。大多数与Windows相关的磁盘文
件如果不是程序模块,就是动态链接程序。迄今为止,我们都是在开发Windows应用程序;现在是尝试编
写动态链接库的时候了。许多您已经学会的编写应用程序的规则同样适用于编写这些动态链接库模块,但
也有一些重要的不同。
动态链接库的基本知识
正如前面所看到的,Windows应用程序是一个可执行文件,它通常建立一个或几个窗口,并使用消息循环
接收使用者输入。通常,动态链接库并不能直接执行,也不接收消息。它们是一些独立的文件,其中包含
能被程序或其它DLL呼叫来完成一定作业的函数。只有在其它模块呼叫动态链接库中的函数时,它才发挥
作用。
所谓「动态链接」,是指Windows把一个模块中的函数呼叫连结到动态链接库模块中的实际函数上的程
序。在程序开发中,您将各种目标模块(.OBJ)、执行时期链接库(.LIB)文件,以及经常是已编译的资源
(.RES)文件连结在一起,以便建立Windows的.EXE文件,这时的连结是「静态连结」。动态链接与此不
同,它发生在执行时期。
KERNEL32.DLL、USER32.DLL和GDI32.DLL、各种驱动程序文件如KEYBOARD.DRV、SYSTEM.DRV和MOUSE.DRV和
视讯及打印机驱动程序都是动态链接库。这些动态链接库能被所有Windows应用程序使用。
有些动态链接库(如字体文件等)被称为「纯资源」。它们只包含数据(通常是资源的形式)而不包含程
序代码。由此可见,动态链接库的目的之一就是提供能被许多不同的应用程序所使用的函数和资源。在一
般的操作系统中,只有操作系统本身才包含其它应用程序能够呼叫来完成某一作业的例程。在Windows
中,一个模块呼叫另一个模块函数的程序被推广了。结果使得编写一个动态链接库,也就是在扩充
Windows。当然,也可认为动态链接库(包括构成Windows的那些动态链接库例程)是对使用者程序的扩
充。
尽管一个动态链接库模块可能有其它扩展名(如.EXE或.FON),但标准扩展名是.DLL。只有带.DLL扩展名
的动态链接库才能被Windows自动加载。如果文件有其它扩展名,则程序必须另外使用LoadLibrary或者
LoadLibraryEx函数加载该模块。
您通常会发现,动态链接库在大型应用程序中最有意义。例如,假设要为Windows编写一个由几个不同的
程序组成的大型财务软件包,就会发现这些应用程序会使用许多共同的例程。可以把这些公共例程放入一
个一般性的目的码链接库(带.LIB扩展名)中,并在使用LINK静态连结时把它们加入各程序模块中。但这
种方法是很浪费的,因为软件包中的每个程序都包含与公共例程相同的程序代码。而且,如果修改了链接
库中的某个例程,就要重新连结使用此例程的所有程序。然而,如果把这些公共例程放到称为
ACCOUNT.DLL的动态链接库中,就可解决这两个问题。只有动态链接库模块才包含所有程序都要用到的例
程。这样能为储存文件节省磁盘空间,并且在同时执行多个应用程序时节省内存,而且,可以修改动态链
接库模块而不用重新连结各个程序。
动态链接库实际上是可以独立存在的。例如,假设您编写了一系列3D绘图例程,并把它们放入名为
GDI3.DLL的DLL中。如果其它软件开发者对此链接库很感兴趣,您就可以授权他们将其加入他们的图形程
序中。使用多个这样的图形程序的使用者只需要一个GDI3.DLL文件。
链接库:一词多义
动态链接库有着令人困惑的印象,部分原因是由于「链接库」这个词被放在几种不同的用语之后。除了动
态链接库之外,我们也用它来称呼「目的码链接库」或「引用链接库」。
目的码链接库是带.LIB扩展名的文件。在使用连结程序进行静态连结时,它的程序代码就会加到程序
的.EXE文件中。例如,在Microsoft Visual C++中,连同程序连结的一般C执行目的码链接库被称为
LIBC.LIB。
引用链接库是目的码链接库文件的一种特殊形式。像目的码链接库一样,引用链接库有.LIB扩展名,并且
被连结器用来确定程序代码中的函数呼叫来源。但引用链接库不含程序代码,而是为连结程序提供信息,
以便在.EXE文件中建立动态链接时要用到的复位位表。包含在Mic
您可能关注的文档
最近下载
- 湘教版八年级上册地理第二章第二节中国的气候课件.pptx VIP
- 十只熊一个家—10的分解组成.ppt VIP
- 垂直起降固定翼无人机网格机库研发与应用 工作技术总结报告.pdf VIP
- 北京六一 DYCP-31DN电泳仪使用说明书操作说明(DYCP31BNDYCP31CNDYCP31DDYCP31DNDYCP31EDYCP32B).pdf
- 八年级地理上册 2.2《中国的气候》2 湘教版.ppt
- AQ9010-2019安全生产责任保险事故预防技术服务规范.pdf VIP
- 初中英语新人教版七年级上册全册教案(2025秋精编版).doc
- 2025年 AMC 8 数学竞赛(中英双语)-学生用卷.doc VIP
- 卢梭的教育思想爱弥儿.ppt VIP
- 高中生学习心理.ppt VIP
文档评论(0)