下载
第9章 动态链接库
动态链接库(Dynamic Link Library,简称D L L ) 是一些编译过的可执行代码模块,后缀名
为. D L L,可以在应用程序中或其他D L L中被调用。在Wi n d o w s环境中,D L L可以实现多个应用
程序共享代码和资源。
D L L的用途非常广泛,是Wi n d o w s程序设计中的一个非常重要的组成部分。本章将从 D L L
的一些基础知识讲起,说明如何在D e l p h i 开发环境中创建和使用D L L。
9.1 概述
使用普通的函数库时,可以在程序链接时将库中的代码拷贝到可执行文件中,这是一种
静态链接。在多个同样的程序执行时,系统保留了许多重复的代码副本,造成了内存资源的
浪费。
在使用D L L 的情况下,当建立应用程序的可执行文件时,不必将 D L L链接到程序中,而
是在应用程序运行时动态地装载 D L L。装载时, D L L 将被映射到进程的地址空间中。同时,
使用D L L 的动态链接并不是将库代码拷贝,只是在程序中记录了函数的入口点和接口。不管
多少程序使用了 D L L,内存中都只有该 D L L 的一个副本。当没有程序使用它时,系统就将它
移出内存,减少了对内存和磁盘的要求。所以,使用 D L L 的一个明显的好处就是可以节省系
统资源。
此外,D L L被广泛地使用,还基于下面的一些原因:
• D L L作为一种基于Wi n d o w s的程序模块,不仅可以包含可执行代码,还可以包括数据和
各种资源等,扩大了库文件的使用范围。有些设备驱动程序也是由动态链接库实现的
(扩展名一般是D RV )。
• D L L技术对于开发大型软件系统也有可用之处。一个大型系统,如果用一个执行文件完
成,程序将很庞大,而且可能有许多重复的功能。如果将程序分成一系列的主程序和
D L L,可以减少开发的工作量。而且由于每个模块减小了,访问的速度也提高了。
• D L L另一个用途是支持世界各国的语言。开发者可以将依赖于语言的函数和资源分离出
来,专门放进D L L中,例如中文、英文、法文等。各地使用软件的用户可以安装或运行
适当的D L L ,以获取正确的本地信息。这是实现软件商品国际化的一项技术。
• 将一些功能模块做成D L L 后,如果需要对系统进行升级,只要将个别 D L L进行升级,然
后用新的D L L 文件覆盖掉旧的D L L文件就可以了,而不需要将整个系统进行重新编译和
链接。
• D L L给程序开发带来了很多灵活性。例如,一件工作有许多方法可以完成,可以将这些
方法利用D L L 实现。当以后新增加了方法后,将新方法也用 D L L 实现,然后只要对原来
的工程文件做少量的修改就可以了。
• D L L还独立于编程语言。例如,在D e l p h i环境中开发的D L L程序可以在Visual C++环境中
方便地使用;同时,在D e l p h i环境中也可以方便地使用在Visual C++中开发的D L L。
了解了D L L的这些特点,就不难明白为什么 D L L的应用那么广泛了。下面逐步地了解 D L L
的实现过程。