Delphi中动态链接库(DLL)的建立和使用

Delphi中动态链接库(DLL)的建立和使用,第1张

Delphi中动态链接库(DLL)的建立和使用,第2张

动态链接库是应用程序和其他dll可以调用的进程和函数的集合,它包含公共代码或资源。因为DLL代码使用了内存共享技术,而且windows在某些地方赋予DLL一些更高的权限,所以DLL可以实现一些普通程序无法实现的功能,比如Windows的HOOK和ISAPI。同时,DLL为不同语言之间的代码共享提供了一种便捷的方式。因此,DLL在编程中被广泛使用。本文将介绍如何在Delphi中建立和使用DLL。

1.。DLL库内存共享机制

从使用效果来看,DLL和unit很像。它们都可以被其他工程模块调用,但它们的内部实现机制有所不同。如果某个单元在一个程序模块中被一个uses语句引用,编译器会将该模块和该单元一起编译,并将编译后的可执行代码链接到该程序模块,这就是为什么一个程序模块可以调用被引用单元中的过程和函数。当同一个单元被多个项目引用时,每个项目都包含该单元的可执行代码。当包含该单元的多个项目同时执行时,该单元的可执行代码会随着不同的项目多次调入内存,造成内存资源的浪费。

DLL不一样。即使被某个项目调用,编译后仍然是独立的。也就是说,一个DLL库经过编译后,形成一个单独的可执行文件,不与其他任何可执行文件相连。因此,DLL库不从属于特定的项目。当多个项目调用同一个DLL库时,只有第一个项目将DLL库调用到内存中,其他项目并不是重复地将同一个DLL库调用到内存中,而是从同一个共享内存区域读取。另外,DLL的执行代码是在程序运行过程中动态调入的,而不是在程序运行时像单元一样和整个项目一起调入内存。这样就可以消除unit带来的同一个代码在很多地方占用内存的弊端。

Delphi 2中动态链接库的建立

在Delphi环境下,写一个DLL和写一个一般的应用程序没有太大的区别。实际上,DLL函数的编程作为DLL的主体,除了内存和资源管理上的差异之外,并不需要其他特殊的手段。

一般工程文件的格式为:

节目标题;

使用条款;

程序体

dll项目文件的格式是:

图书馆的项目名称;

使用条款;

Exprots条款;

程序体

它们之间有两个主要区别:

1.program关键字用于一般工程文件的文件头,而library关键字用于DLL工程文件的文件头。不同的关键字告诉编译器生成不同的可执行文件。program关键字生成一个。而library关键字生成一个. dll文件。

2.如果DLL希望为其他应用程序输出函数或过程,这些函数或过程必须在exports子句中列出。这些函数或过程本身必须使用导出编译指令进行编译。

选择新的...项,双击弹出窗口中的DLL图标,就会自动给出DLL源模块框架,如下图:

图书馆项目1;

{...评论...}

使用

SysUtils,类;

开始

结束。

接下来,可以在USES和begin之间添加要在DLL中实现的过程和函数的定义,并使用export和exprots的单词将它们引出,以便其他模块可以引用它们。在begin和end之间添加初始化代码,用于初始化DLL变量。需要注意的是,即使没有初始化代码begin和end,也不能省略,如下例所示:

库minmax

函数Min(X,Y: Integer):整数;出口;

开始

如果X < Y那么Min := X否则Min:= Y;

结束;

函数Max(X,Y: Integer):整数;出口;

开始

如果X > Y那么Max := X否则Max:= Y;

结束;

出口

最小索引1,

最大指数2;

开始

结束。

在minmax.DLL编译并保存后,形成一个DLL库文件。

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » Delphi中动态链接库(DLL)的建立和使用

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情