第9章动态链接库7.PDF

  1. 1、本文档共32页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第9章动态链接库7

下载 第9章 动态链接库 本章内容: • 究竟什么是D L L • 静态链接与动态链接 • 为什么使用D L L • 创建和使用D L L • 显示D L L 中的模式窗体 • 在D e l p h i应用程序中使用D L L • DLL 的入口和出口函数 • DLL 中的异常 • 回调函数 • 从D L L 中调用回调函数 • 在不同的过程中共享D L L数据 • 引出D L L 中的对象 本章讨论了Wi n 3 2动态链接库,也就是D L L 。D L L是用来编写Wi n d o w s应用程序的关键组成部分。 本章讨论了使用和创建D L L 的几个方面,它给出了D L L 怎样工作的概述并讨论了怎样创建和使用D L L , 你将学会怎样调入D L L和链接由它们引出的过程和函数的不同方法。本章还包括回调函数的使用并举 例说明在不同调用进程中如何实现共享数据。 9.1 究竟什么是DLL 动态链接库是程序模块,它包括代码、数据或资源,能够被其他的 Wi n d o w s应用程序共享。D L L 的主要特点之一是应用程序可以在运行时调入代码执行,而不是在编译时链接代码,因此,多个应用 程序可以共享同一个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 3 2系 统的动态链接库。K e r n e l . d l l负责内存、进程和线程的管理。 U S E R 3 2 . D L L包含了一些程序,是创建窗 口和处理Wi n 3 2 消息的用户接口。 G D I 3 2 . D L L 负责处理图形。你还会听说其他的系统 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 ,它们分别处理对象安全性/注册操作和通用对话框。 使用动态链接库的另一个特点是有利于应用程序的模块化。这样就简化了应用程序的修改,因为 一般只需要修改D L L ,而不是整个应用程序。Wi n d o w s环境自身就是模块化类型的典型实例。每当安 装一个新设备,就安装一个设备驱动程序 ( 即D L L ) ,使设备能够与Wi n d o w s相互通信。 在磁盘上,一个D L L基本上类似于一个Wi n d o w s可执行文件( * . E X E ) 。一个主要的区别是, D L L不是 一个独立的可执行文件,尽管它可能包含了可执行代码。大部分 D L L文件的扩展名是 . d l l,也有的可能 是. d r v (设备驱动程序) 、. s y s (系统文件) 、. f o n (字体文件) ,这些不包含可执行代码。 注意 Delphi 引入了一种叫做程序包的特殊用途的DLL ,它应用于Delphi和C++编程环境。我们 将在第21章深入探究程序包。 D L L通过动态链接技术 (dynamic linking)与其他应用程序共享代码,这将在本章后面部分讨论。总 之,当一个应用程序使用了一个 D L L ,Wi n 3 2 系统会确保内存中只有一个该 D L L 的拷贝,这是通过内 第9章 动态链接库 2 3 5 下载 存映射文件来实现的。 D L L 首先被调入Wi n 3 2 的全局堆,然后映射到调用这个 D L L进程的地址空间。 在Wi n 3 2 系统中,每个进程都被分配有自己的 3 2位线性地址空间。当一个 D L L被多个进程调用时,每 个进程都会获得该D L L 的一份映像。因此,在1 6位Wi n d o w s 中,程序代码、数据、资源不被进程共享, 而在Wi n 3 2 中,D L L是可以被看作是属于调用该D L L进程自己的代码。为得到关于Wi n 3 2概念的更多信 息,请参阅第3章“Win32 API ”。 但这并不意味着,如果多进程调用一个 D L L ,物理内存就分配有该D L L 的每个实例。通过从系统 的全局堆到调用该D L L 的每一进程的地址空间的映射,D L L 映像置于每个进程的地址空间。至少在理 想情况下应这样。 设置DLL的首选基地址 如果D L L被调入进程的地址空间时

文档评论(0)

jixujianchi + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档