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