原来的文章很多小问题,不过这篇文章不失是一篇DLL学习基础篇文章。(注:文章中的问题未作任何修改)
转摘自:http://hanyi.codelphi.com/jiqiao/26.html
第一章 为什么要使用动态链接库(DLL)
提起DLL您一定不会陌生,在Windows中有着大量的以DLL为后缀的文件,它们是保证Windows正常运行和维护升级的重要保证。(举个例子,笔者的Win95 System目录下尽有500多个DLL文件。)其实,DLL是一种特殊的可执行文件。说它特殊主要是因为一般它都不能直接运行,需要宿主程序比如*.EXE程序或其他DLL的动态调用才能够使用。简单的说,在通常情况下DLL是经过编译的函数和过程的集合。
使用DLL技术主要有以下几个原因:
一、减小可执行文件大小。
DLL技术的产生有很大一部分原因是为了减小可执行文件的大小。当操作系统进入Windows时代后,其大小已经达到几十兆乃至几百兆。试想如果还是使用DOS时代的单执行文件体系的话一个可执行文件的大小可能将达到数十兆,这是大家都不能接受的。解决的方法就是采用动态链接技术将一个大的可执行文件分割成许多小的可执行程序。
二、实现资源共享。
这里指的资源共享包括很多方面,最多的是内存共享、代码共享等等。早期的程序员经常碰到这样的事情,在不同的编程任务中编写同样的代码。这种方法显然浪费了很多时间,为了解决这个问题人们编写了各种各样的库。但由于编程语言和环境的不同这些库一般都不能通用,而且用户在运行程序时还需要这些库才行,极不方便。DLL的出现就像制定了一个标准一样,使这些库有了统一的规范。这样一来,用不同编程语言的程序员可以方便的使用用别的编程语言编写的DLL。另外,DLL还有一个突出的特点就是在内存中只装载一次,这一点可以节省有限的内存,而且可以同时为多个进程服务。
三、便于维护和升级。
细心的朋友可能发现有一些DLL文件是有版本说明的。(查
看DLL文件的属性可以看到,但不是每一个DLL文件都有)这是为
了便于维护和升级。举个例子吧,早期的Win95中有一个BUG那就
是在闰年不能正确显示2月29日这一天。后来,Microsoft发布了
一个补丁程序纠正了这个BUG。值得一提的是,我们并没有重装
Win95,而是用新版本的DLL代替了旧版本的DLL。(具体是哪一
个DLL文件笔者一时想不起来了。)另一个常见的例子是驱动程
序的升级。例如,著名的DirectX就多次升级,现在已经发展到
了6.0版了。更妙的是,当我们试图安装较低版本的DLL时,系统
会给我们提示,避免人为的操作错误。例如我们升级某硬件的驱
动程序时,经常碰到Windows提示我们当前安装的驱动程序比原
来的驱动程序旧。
四、比较安全。
这里说的安全也包括很多方面。比如,DLL文件遭受病毒的
侵害机率要比普通的EXE文件低很多。另外,由于是动态链接的,
这给一些从事破坏工作的“高手”们多少带来了一些反汇编的困
难。
第二章 在Delphi中编写DLL top
注意:在这里笔者假定读者使用的是Delphi 3或Delphi 4
开场白说了那么多,总该言归正传了。编写DLL其实也不是
一件十分困难的事,只是要注意一些事项就够了。为便于说明,
我们先举一个例子。
library Delph