动态链接库(DLL)是Windows编程常遇到的编程方法,测试时,可能需要进行静态调用法和动态调用法进行测试。下面介绍一下在BCB (C++ Builder下简称BCB) 中如何创建使用DLL和一些技巧。
在BCB中使用DLL有两种方法:
1.用静态调用法
首先需要在BCB的项目中加入输入接口库(import library),打开工程项目,使用BCB View|Project Manager打开项目列表,向项目中加入接口库(*.lib)。
方法:将该文件拷贝到当前目录,使用 implib MyDll.lib MyDll.dll 生成,使用 $BCB path/Bin/implib.exe 生成 Lib 文件,加入到工程文件中
其次在头文件中加入接口声明。
例程序如下:
//define in include file
extern "C" __declspec(dllimport) int __cdecl test();
//use function in main program
int I;
I=test();
注意:
(1)动态链接库调用过程、函数时CALL方式 与创建时方式一样不写为__cdecl,其它需要声明。
(2)BCB创建的DLL有对应的输入接口库(import library),如只有DLL而无库时,可用BCB的implib工具产生:implib xxx.lib xxx.dll;另外可用:tlibxxx.lib,xxx.lst 产生DLL的内部函数列表,许多Windows的未公开技术就是用这种方法发现的。
dll中用到的变量也自己写,如enum VideoStandard
{
VIDEO_STANDARD_NTSC,
VIDEO_STANDARD_PAL
};就不用加vc的头文件了
2.动态调用法
动态调用法要用Windows API 中的LoadLibrary()和GetProcAddress()来调入DLL库,指出库中函数位置,这种方法较常见。
例程序如下:
HINSTANCE dd;
int _stdcall (*ddd)(void);
dd=LoadLibrary("xxx.dll");
ddd=GetProcAddress(dd,"test");
Caption=IntToStr(ddd());
FreeLibrary(dd);
需要使用vc的头文件。方法:#include "IDVP7010BDLL.h"(修改vc的头文件)
在project下的directory中添加,头文件的路径。
三、注意:
创建DLL时编译链接时注意设置Project Options。
Packages标签:去除Builder with runtime packages检查框。
Linker标签:去除Use dynamic RTL检查框。
否则创建的DLL需要Runtime packages or Runtime library。