DLL(动态链接库)充当可由许多应用程序和其他DLL调用的共享函数库。Delphi允许您创建和使用DLL,以便您可以随意调用这些函数。但是,必须先导入这些例程,然后才能调用它们。
从DLL导出的函数可以通过两种方式导入,一种是声明外部过程或函数(静态),另一种是直接调用特定于DLL的API函数(动态)。
让我们考虑一个简单的DLL。下面是“circle.dll”的代码,导出一个名为“CircleArea”的函数,该函数使用给定半径计算圆的面积:
拥有circle.dll后,可以使用应用程序中导出的“CircleArea”函数。
导入过程或函数的最简单方法是使用外部指令声明它:
如果在单元的接口部分包含此声明,则程序启动时将加载circle.dll一次。在整个程序执行过程中,使用上述声明所在单元的所有单元都可以使用CircleArea函数。
您可以通过直接调用Win32 API(包括LoadLibrary、FreeLibrary和GetProcAddress)来访问库中的例程。这些函数在Windows.pas中声明。
以下是如何使用动态加载调用CircleArea函数:
使用动态加载进行导入时,直到调用LoadLibrary后才会加载DLL。通过调用FreeLibrary卸载库。
通过静态加载,DLL被加载,其初始化部分在调用应用程序的初始化部分执行之前执行。这与动态载荷相反。
下面简单介绍静态和动态DLL加载的优缺点:
静载荷
赞成的意见:
欺骗:
动载荷
赞成的意见:
欺骗:
...内存分配有效。一个缺点是实现动态内存分配很复杂。 静止的(static)和动态内存分配(dynamic memory allocation)的共同点 两者都是内存分配机制。 两者都应该由程序员手动实现。 静止的(static)和动态内存分配(dynamic memory allocation)的...
...静态绑定与动态绑定的表格形式 6. 摘要 什么是静态绑定(static binding)? 绑定是方法调用和方法定义之间的链接。 图01:静态绑定和动态绑定 参考下面用Java编写的程序。 公共A级{ 公共无效方法1(){ System.out.println(“方法1”)...
...更受读者的喜爱。这提供了对这两类字符的基本理解。 静止的(static)和动态特性(dynamic characters)的区别 •静态人物在整个小说中没有发生任何变化,从头到尾都保持不变。这些大多是故事中的小人物。 •另一方面,动态角色在...
静态与动态路由 静态路由和动态路由的区别在于路由条目进入系统的方式。计算机网络中的路由是指在计算机网络中正确地转发数据包,使数据包最终到达正确的目的地的过程。路由主要有静态路由和动态路由两种类型。在...
动态IP是指每次连接到网络时都会发生变化的IP,而静态IP是指无论连接多少次或从网络断开多少次都保持不变的IP。您是否有静态或动态IP地址取决于所述网络的管理员。每次连接到网络时,动态IP都会发生变化;这是一种在连接...
...理解恶意软件分析的方法。 什么是静态恶意软件分析(static malware ****ysis)? 静态分析是在不实际运行代码的情况下分析恶意软件二进制文件的过程。静态分析通常通过确定二进制文件的签名来执行,该签名是二进制文件的唯一...
...群用于针对关键的表现区域。 什么是静态拉伸练习(static stretch exercises)? 静态拉伸练习是一种更慢、更受控制的运动形式。静态练习是用来保持一个姿势在一个伸展的立场,并适合后锻炼阶段。它们有助于冷却过程,因为...
...然而,这种情况在机械意义上比化学意义上更有意义。 静止的(static)和动态平衡(dynamic equilibrium)的区别 定义 动态平衡是反应物转化为产物,产物以相等且恒定的速率转化为反应物的平衡。 静态平衡是当反应中的所有粒子都处于...
...站。电子商务网站和社交媒体网站是***站的两个例子。 静止的(static)和***站(dynamic website)的区别 定义 静态网站是一个网站,它的网页是用HTML编码的,每个网页的内容都是固定的,除非经过编辑和重新发布,否则不会改变。***站...
静态IP地址和动态IP地址的主要区别在于,静态IP地址是由网络管理员手动分配给设备的固定地址,而动态IP地址是由DHCP服务器自动分配给设备的地址。 计算机网络由各种设备组成,如台式机、笔记本电脑、服务器、路由器和交...