delphi的dll编程

delphi的dll编程

ID:41037186

大小:118.00 KB

页数:22页

时间:2019-08-14

delphi的dll编程_第1页
delphi的dll编程_第2页
delphi的dll编程_第3页
delphi的dll编程_第4页
delphi的dll编程_第5页
资源描述:

《delphi的dll编程》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、1.1Windows的动态链接库原理动态链接库(DLLs)是从C语言函数库和Pascal库单元的概念发展而来的。所有的C语言标准库函数都存放在某一函数库中,同时用户也可以用LIB程序创建自己的函数库。在链接应用程序的过程中,链接器从库文件中拷贝程序调用的函数代码,并把这些函数代码添加到可执行文件中。这种方法同只把函数储存在已编译的.OBJ文件中相比更有利于代码的重用。但随着Windows这样的多任务环境的出现,函数库的方法显得过于累赘。如果为了完成屏幕输出、消息处理、内存管理、对话框等操作,每个程序都不得不拥有自己

2、的函数,那么Windows程序将变得非常庞大。Windows的发展要求允许同时运行的几个程序共享一组函数的单一拷贝。动态链接库就是在这种情况下出现的。动态链接库不用重复编译或链接,一旦装入内存,Dlls函数可以被系统中的任何正在运行的应用程序软件所使用,而不必再将DLLs函数的另一拷贝装入内存。1.1.1动态链接库的工作原理“动态链接”这几字指明了DLLs是如何工作的。对于常规的函数库,链接器从中拷贝它需要的所有库函数,并把确切的函数地址传送给调用这些函数的程序。而对于DLLs,函数储存在一个独立的动态链接库文件中

3、。在创建Windows程序时,链接过程并不把DLLs文件链接到程序上。直到程序运行并调用一个DLLs中的函数时,该程序才要求这个函数的地址。此时Windows才在DLLs中寻找被调用函数,并把它的地址传送给调用程序。采用这种方法,DLLs达到了复用代码的极限。动态链接库的另一个方便之处是对动态链接库中函数的修改可以自动传播到所有调用它的程序中,而不必对程序作任何改动或处理。DLLs不仅提供了函数重用的机制,而且提供了数据共享的机制。任何应用程序都可以共享由装入内存的DLLs管理的内存资源块。只包含共享数据的DLLs

4、称为资源文件。如Windows的字体文件等。1.1.2Windows系统的动态链接库Windows本身就是由大量的动态链接库支持的。这包括WindowsAPI函数(KRNLx86.EXE,USER.EXE,GDI.EXE,…),各种驱动程序文件,各种带有.Fon和.Fot扩展名的字体资源文件等。Windows还提供了针对某一功能的专用DLLs,如进行DDE编程的ddeml.dll,进行程序安装的ver.dll等。虽然在编写Windows程序时必然要涉及到DLLs,但利用Delphi,用户在大部分时候并不会注意到这一

5、点。这一方面是因为Delphi提供了丰富的函数使用户不必直接去使用WindowsAPI;另一方面即使使用WindowsAPI,由于Delphi把API函数和其它WindowsDLLs函数重新组织到了几个库单元中,因而也不必使用特殊的调用格式。所以本章的重点放在编写和调用用户自定义的DLLs上。使用传统的Windows编程方法来创建和使用一个DLLs是一件很令人头痛的事,正如传统的Windows编程方法本身就令人生畏一样。用户需要对定义文件、工程文件进行一系列的修改以适应创建和使用DLLs的需要。Delphi的出现,

6、在这一方面,正如在其它许多方面所做的那样,减轻了开发者的负担。更令人兴奋的是Delphi利用DLLs实现了窗体的重用机制。用户可以将自己设计好的窗体储存在一个DLLs中,在需要的时候可随时调用它。1.1DLLs的编写和调用1.1.1DLLs的编写在Delphi环境中,编写一个DLLs同编写一个一般的应用程序并没有太大的区别。事实上作为DLLs主体的DLL函数的编写,除了在内存、资源的管理上有所不同外,并不需要其它特别的手段。真正的区别在工程文件上。在绝大多数情况下,用户几乎意识不到工程文件的存在,因为它一般不显示在

7、屏幕上。如果想查看工程文件,则可以打开View菜单选择ProjectSource项,此时工程文件的代码就会出现在屏幕的CodeEditor(代码编辑器)中。一般工程文件的格式为:program工程标题;uses子句;程序体而DLLs工程文件的格式为:library工程标题;uses子句;exprots子句;程序体它们主要的区别有两点:1.一般工程文件的头标用program关键字,而DLLs工程文件头标用library关键字。不同的关键字通知编译器生成不同的可执行文件。用program关键字生成的是.exe文件,而用

8、library关键字生成的是.dll文件;2.假如DLLs要输出供其它应用程序使用的函数或过程,则必须将这些函数或过程列在exports子句中。而这些函数或过程本身必须用export编译指令进行编译。根据DLLs完成的功能,我们把DLLs分为如下的三类:1.完成一般功能的DLLs;2.用于数据交换的DLLs;3.用于窗体重用的DLLs。这一节我们只讨论完成一

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。