第10章DLL的应用 本章要点: 区DLL的基本概念 区DLL的创建 区DLL的静态调用方式 区DLL的动态调用方式 区利用DLL实现窗体重用
本章要点: DLL的基本概念 DLL的创建 DLL的静态调用方式 DLL的动态调用方式 利用DLL实现窗体重用 第10章 DLL的应用
101DLL概述 动态链接库( Dynamic Link Library,缩写为DLL)是编写 Windows应用程序的关键部件。它是一种程序模块,是实现 Windows应用程序代码重用与共享的重要手段。通过DLL可以 实现多个应用程序共享代码和资源。在使用 Windows操作系统 的过程中,可以在系统目录中发现很多以DLL为扩展名的文件, 事实上它是 Windows操作系统中非常重要的一部分。许多可视 化开发工具(如Vsua| Basic)并不支持DLL的创建,而 Delphi 7.0在DLL的使用方面有非常优秀的表现。本章将介绍动态链 接库方面的内容,包括动态链接库的工作原理、编写、调用方 式及利用DLL实现窗体重用和数据共享,相信通过对本章的学 习,你可以基本掌握DLL的创建及应用。 Inprise Dephi
10.1 DLL概述 动态链接库(Dynamic Link Library,缩写为DLL)是编写 Windows应用程序的关键部件。它是一种程序模块,是实现 Windows应用程序代码重用与共享的重要手段。通过DLL可以 实现多个应用程序共享代码和资源。在使用Windows操作系统 的过程中,可以在系统目录中发现很多以DLL为扩展名的文件, 事实上它是Windows操作系统中非常重要的一部分。许多可视 化开发工具(如Visual Basic)并不支持DLL的创建,而Delphi 7.0在DLL的使用方面有非常优秀的表现。本章将介绍动态链 接库方面的内容,包括动态链接库的工作原理、编写、调用方 式及利用DLL实现窗体重用和数据共享,相信通过对本章的学 习,你可以基本掌握DLL的创建及应用
1011DLL的基本概念 1.什么是动态链接库 DLL是一个可以被其他应用程序共享的程序模块,其中包含了一些可以 被多个 Windows应用程序共享的代码、数据和资源。DLL主要的用途是使应 用程序可以在运行时刻载入其中的代码,而不是在编译的时刻链接到应用程 序中。动态链接库文件的扩展名一般是dl,也有可能是drv、Sys和fon( 它们分别对应的是设备驱动文件、系统文件和字体资源文件)。它和可执行文 件(exe)非常类似,区别在于DLL中虽然包含了可执行代码却不能单独执行, 只能由 Windows应用程序直接或间接调用。 2.静态链接和动态链接( Static Linking and Dynamic Linking 早期DOS下的C语言版本中提供了许多含有大量函数的头文件(h文 件),所有的标准库函数都存在某一个函数库中,这些函数的代码在编译后 直接包含在应用程序中。但随着 Windows多任务环境的出现,函数库的方法 显得过于累赘。应用程序为了完成诸如屏幕输出、消息处理、内存管理、对 话框等操作,不得不拥有自己的函数,这样, Windows应用程序就变得非常 庞大,而 Windows的发展要求允许同时运行的几个程序共享一组涵数的单 拷贝 Inprise Dephi
10.1.1 DLL的基本概念 它们分别对应的是设备驱动文件、系统文件和字体资源文件)。它和可执行文 件(exe)非常类似,区别在于DLL中虽然包含了可执行代码却不能单独执行, 只能由Windows应用程序直接或间接调用。 2. 静态链接和动态链接(Static Linking and Dynamic Linking) 早期DOS下的C语言版本中提供了许多含有大量函数的头文件(.h文 件),所有的标准库函数都存在某一个函数库中,这些函数的代码在编译后 直接包含在应用程序中。但随着Windows多任务环境的出现,函数库的方法 显得过于累赘。应用程序为了完成诸如屏幕输出、消息处理、内存管理、对 话框等操作,不得不拥有自己的函数,这样,Windows应用程序就变得非常 庞大,而Windows 的发展要求允许同时运行的几个程序共享一组函数的单 一拷贝。 1. 什么是动态链接库 DLL是一个可以被其他应用程序共享的程序模块,其中包含了一些可以 被多个Windows应用程序共享的代码、数据和资源。DLL主要的用途是使应 用程序可以在运行时刻载入其中的代码,而不是在编译的时刻链接到应用程 序中。动态链接库文件的扩展名一般是dll,也有可能是drv、sys和fon(
1011DLL的基本概念 在链接应用程序过程中,连接器从库文件中将这些被应用程序调用的函数 代码添加到可执行文件中。所谓静态链接是指把要调用的函数或过程直接链接 的,动态链接所调用的函数代码并没有被拷贝到应用程序的可执行文件不学 到可执行文件中,成为可执行文件的一部分。动态链接是相对于静态链接而 而是仅仅在其中加入了所调用函数的描述信息(往往是一些重定位信息)。 图10-1描述了系统在静态链接和动态链接时的调用过程,其中动态链接 时生成的文件明显小于静态链接所生成的文件,这是使用DLL的优势 源代码 库DCU 可执行文件 动态链接 可执行文件 动态链接库2(DLL) 图10-1静态链接和动态链接 uprise Dephi
10.1.1 DLL的基本概念 图10-1描述了系统在静态链接和动态链接时的调用过程,其中动态链接 时生成的文件明显小于静态链接所生成的文件,这是使用DLL的优势。 图10-1 静态链接和动态链接 在链接应用程序过程中,连接器从库文件中将这些被应用程序调用的函数 代码添加到可执行文件中。所谓静态链接是指把要调用的函数或过程直接链接 到可执行文件中,成为可执行文件的一部分。动态链接是相对于静态链接而言 的,动态链接所调用的函数代码并没有被拷贝到应用程序的可执行文件中去, 而是仅仅在其中加入了所调用函数的描述信息(往往是一些重定位信息)
10.12使用DL的优点( 使用DLL建立一个可执行文件时,DLL只是被映射到应用程序进程的地 址空间中,不管多少程序使用DLL,内存中都只有该DLL的一个拷贝,而当 没有程序使用它时,系统就将其移出内存。使用DLL有许多优点,大体上说 使用动态链接库可以共享代码和系统资源,可以隐藏实现代码的细节及拓 展开发工具的功能,下面分别讨论这几方面的内容 1.多个应用程序共享代码、资源和数据 使用DLL主要是为了实现共享代码,DLL可以让在任何可以调用DLL函 数的 Windows应用程序之间共享代码。同时,DLL提供了共享资源的手段, 如位图、字体、图标等资源可以直接放在DLL中,以便多个应用程序同时使 用它们,从而节省了内存空间。 2.隐藏实现的细节 有时希望隐藏DLL中例程的实施细节。事实上DLL只提供函数的调用而 不泄漏实现的源代码。如果希望应用程序访问DLL,只要提供接口单元让其 他人可以访问即可。 Delph7.0中的 Windows单元就是Wn32DLL的接口单 元,即 Windows.pas文件 Inprise Deph
10.1.2 使用DLL的优点(1) 2. 隐藏实现的细节 有时希望隐藏DLL中例程的实施细节。事实上DLL只提供函数的调用而 不泄漏实现的源代码。如果希望应用程序访问DLL,只要提供接口单元让其 他人可以访问即可。Delphi 7.0中的Windows单元就是Win32 DLL的接口单 元,即Windows.pas 文件。 1. 多个应用程序共享代码、资源和数据 使用DLL主要是为了实现共享代码,DLL可以让在任何可以调用DLL函 数的Windows应用程序之间共享代码。同时,DLL提供了共享资源的手段, 如位图、字体、图标等资源可以直接放在DLL中,以便多个应用程序同时使 用它们,从而节省了内存空间。 使用DLL建立一个可执行文件时,DLL只是被映射到应用程序进程的地 址空间中,不管多少程序使用DLL,内存中都只有该DLL的一个拷贝,而当 没有程序使用它时,系统就将其移出内存。使用DLL有许多优点,大体上说, 使用动态链接库可以共享代码和系统资源,可以隐藏实现代码的细节及拓 展开发工具的功能,下面分别讨论这几方面的内容