Delphi 动态链接库编程(一)

2008-02-23 07:16:20来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

10.1 Windows的动态链接库原理 

  动态链接库(DLLs)是从C语言函数库和Pascal库单元的概念发展而来的。所有的C语言标准库函数都存放在某一函数库中,同时用户也可以用LIB程序创建自己的函数库。在链接应用程序的过程中,链接器从库文件中拷贝程序调用的函数代码,并把这些函数代码添加到可执行文件中。这种方法同只把函数储存在已编译的.OBJ文件中相比更有利于代码的重用。

  但随着Windows这样的多任务环境的出现,函数库的方法显得过于累赘。如果为了完成屏幕输出、消息处理、内存管理、对话框等操作,每个程序都不得不拥有自己的函数,那么Windows程序将变得非常庞大。Windows的发展要求允许同时运行的几个程序共享一组函数的单一拷贝。动态链接库就是在这种情况下出现的。动态链接库不用重复编译或链接,一旦装入内存,Dlls函数可以被系统中的任何正在运行的应用程序软件所使用,而不必再将DLLs函数的另一拷贝装入内存。 

10.1.1 动态链接库的工作原理 

  “动态链接”这几字指明了DLLs是如何工作的。对于常规的函数库,链接器从中拷贝它需要的所有库函数,并把确切的函数地址传送给调用这些函数的程序。而对于DLLs,函数储存在一个独立的动态链接库文件中。在创建Windows程序时,链接过程并不把DLLs文件链接到程序上。直到程序运行并调用一个DLLs中的函数时,该程序才要求这个函数的地址。此时Windows才在DLLs中寻找被调用函数,并把它的地址传送给调用程序。采用这种方法,DLLs达到了复用代码的极限。

  动态链接库的另一个方便之处是对动态链接库中函数的修改可以自动传播到所有调用它的程序中,而不必对程序作任何改动或处理。

  DLLs不仅提供了函数重用的机制,而且提供了数据共享的机制。任何应用程序都可以共享由装入内存的DLLs管理的内存资源块。只包含共享数据的DLLs称为资源文件。如Windows的字体文件等。 

10.1.2 Windows系统的动态链接库 

  Windows本身就是由大量的动态链接库支持的。这包括Windows API函数 ( KRNLx86.EXEUSER.EXEGDI.EXE,…),各种驱动程序文件,各种带有.Fon.Fot 扩展名的字体资源文件等。Windows还提供了针对某一功能的专用DLLs,如进行DDE编程的ddeml.dll,进行程序安装的ver.dll等。

  虽然在编写Windows程序时必然要涉及到DLLs,但利用Delphi ,用户在大部分时候并不会注意到这一点。这一方面是因为Delphi提供了丰富的函数使用户不必直接去使用Windows API;另一方面即使使用Windows API,由于DelphiAPI函数和其它Windows DLLs函数重新组织到了几个库单元中,因而也不必使用特殊的调用格式。所以本章的重点放在编写和调用用户自定义的DLLs上。

  使用传统的Windows编程方法来创建和使用一个DLLs是一件很令人头痛的事,正如传统的Windows编程方法本身就令人生畏一样。用户需要对定义文件、工程文件进行一系列的修改以适应创建和使用DLLs的需要。Delphi的出现,在这一方面,正如在其它许多方面所做的那样,减轻了开发者的负担。更令人兴奋的是Delphi利用DLLs 实现了窗体的重用机制。用户可以将自己设计好的窗体储存在一个DLLs中,在需要的时候可随时调用它。 

10.2 DLLs的编写和调用 

10.2.1 DLLs的编写 

  在Delphi环境中,编写一个DLLs同编写一个一般的应用程序并没有太大的区别。事实上作为DLLs 主体的

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:Delphi 数据访问部件的应用及编程(一)

下一篇:Delphi 剪贴板和动态数据交换(二)