一、什么是DLL

动态链接库(Dynamic-Link Library),简称DLL,可以将对象或函数封装到一个二进制代码文件中,供其它程序使用。它是基于Windows程序设计中程序代码共享的一个常用方法。

使用DLL有许多优点:

  (1)使用DLL的动态连接不是将库代码拷贝,只在程序中记录函数的入口点和接口,在程序执行时才将库代码装入内存,如果有多个程序使用相同的DLL,也只需将DLL在内存中装载一次,节省了内存开销。   

  (2)DLL是基于Windows的程序模块,它不仅包含可执行代码,还可以包含数据,各种资源,扩大了库文件的使用范围。

  (3)对于一个大型的、不断更新的应用程序,可以将许多重复的功能写成DLL,用主程序调用,这样既减少了开发的工作量,又提高了访问速度。

  (4)DLL丰富了PowerScript语言的编程能力,可以使用PowerScript函数集之外的函数。

  (5)DLL独立于编程语言,大多数WINDOWS编程环境都允许主程序调用DLL中的函数。即可以用VC++、VB、PowerBuilder、Delphi、汇编语言等建立DLL,然后在不同语言编制的应用程序中调用它。

二、VC++创建DLL动态链接库

在某些情况下我们需要借助第三方工具来完成PB难以实现的任务。例如我们希望取得某个文件的最后修改日期,在PB中并未提供相应的函数供我们使用,这时可以使用VC++或DELPHI等系统控制能力强的工具来开发相应的函数并封装到DLL文件中。

1、在VC++中建立新工程。选择projects类型为win32 dynamic-link library,输入工程名称为mhand。

为动态链接库工程选择 a simple dll project类型。

VC++的向导自动建立该工程。在mhand.cpp文件中加入一行:

#include <windows.h>

在该文件未加入getfiledatetime函数的代码(win2000和win98系统下源代码有所不同,win2000系统下请见getfiledatetime-2000.c.txt文件,win98下请见getfiledatetime-98.c.txt)。

新建一文件mhand.def并把它加入到当前工程中,该文件的内容如下图所示:

编译当前工程mhand,如果没有出错则在您指定的工程文件夹的debug文件夹中会生成mhand.dll文件。

注意:为了使得PB能够调用该文件,应该将其放入系统文件夹中(win2000下将mhand.dll.2000改名为mhand.dll win98下将mhand.dll.98改名为mhand.dll)。

 

三、在PB中使用该动态链接库。

如下图所示在w_maintain窗口中的“注册”标签卡中加入一单行编辑框和一个按钮,

为当前应用程序对象定义一个全局外部函数。

注意定义外部函数的语法。函数名称、返回值类型、参数顺序及类型要与DLL中的函数一致。

在按钮的clicked事件中加入下列代码:

下图是运行该段代码的情况:

 

返回

数据空间