- 1、本文档共14页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
下载
第四部分 动态链接库
第1 9章 D L L基础
自从M i c r o s o f t 公司推出第一个版本的Wi n d o w s操作系统以来,动态链接库( D L L )一直是
这个操作系统的基础。 Windows API 中的所有函数都包含在 D L L 中。3 个最重要的 D L L 是
K e r n e l 3 2 . d l l ,它包含用于管理内存、进程和线程的各个函数; U s e r 3 2 . d l l ,它包含用于执行用
户界面任务(如窗口的创建和消息的传送)的各个函数; G D I 3 2 . d l l ,它包含用于画图和显示
文本的各个函数。
Wi n d o w s 还配有若干别的 D L L ,它们提供了用于执行一些特殊任务的函数。例如,
A d v A P I 3 2 . d l l包含用于实现对象安全性、注册表操作和事件记录的函数; C o m D l g 3 2 . d l l包含常
用对话框(如File Open 和File Save );C o m C t l 3 2 . D L L则支持所有的常用窗口控件。
本章将要介绍如何为应用程序创建D L L 。下面是为什么要使用D L L 的一些原因:
• 它们扩展了应用程序的特性。由于 D L L能够动态地装入进程的地址空间,因此应用程序
能够在运行时确定需要执行什么操作,然后装入相应的代码,以便根据需要执行这些操
作。例如,当一家公司开发了一种产品,想要让其他公司改进或增强该产品的功能时,
那么就可以使用D L L 。
• 它们可以用许多种编程语言来编写。可以选择手头拥有的最好的语言来编写 D L L 。也许
你的应用程序的用户界面使用Microsoft Visual Basic编写得最好,但是用C + +来处理它的
商用逻辑更好。系统允许Visual Basic 程序加载C++ DLL 、Cobol DLL和Fortran DLL等。
• 它们简化了软件项目的管理。如果在软件开发过程中不同的工作小组在不同的模块上工
作,那么这个项目管理起来比较容易。但是,应用程序在销售时附带的文件应该尽量少
一些。我知道有一家公司销售的产品附带了 1 0 0个D L L——每个程序员最多有 5个D L L 。
这样,应用程序的初始化时间将会长得吓人,因为系统必须打开 1 0 0个磁盘文件之后,程
序才能执行它的操作。
• 它们有助于节省内存。如果两个或多个应用程序使用同一个 D L L ,那么该D L L 的页面只
要放入R A M一次,所有的应用程序都可以共享它的各个页面。 C / C + +运行期库就是个极
好的例子。许多应用程序都使用这个库。如果所有的应用程序都链接到这个静态库,那
么s p r i n t f 、s t r c p y和m a l l o c 等函数的代码就要多次存在于内存中。但是,如果所有这些应
用程序链接到DLL C/C++运行期库,那么这些函数的代码就只需要放入内存一次,这意
味着内存的使用将更加有效。
• 它们有助于资源的共享。 D L L可以包含对话框模板、字符串、图标和位图等资源。多个
应用程序能够使用D L L来共享这些资源。
• 它们有助于应用程序的本地化。应用程序常常使用 D L L对自己进行本地化。例如,只包
含代码而不包含用户界面组件的应用程序可以加载包含本地化用户界面组件的 D L L 。
• 它们有助于解决平台差异。不同版本的 Wi d n o w s配有不同的函数。开发人员常常想要调
用新的函数(如果它们存在于主机的 Wi n d o w s版本上的话)。但是,如果你的源代码包含
464计计第四部分 动态链接库
下载
了对一个新函数的调用,而你的应用程序将要在不能提供该函数的 Wi n d o w s版本上运行,
那么操作系统的加载程序将拒绝运行你的进程。即使你实际上从不调用该函数,情况也
是这样。如果将这些新函数保存在 D L L 中,那么应用程序就能够将它们加
文档评论(0)