BCB 编写 DLL 终极手册

http://tech.ddvip.com   2006年03月31日    社区交流

本文详细介绍BCB 编写 DLL 终极手册

  6. 静态调用例子

  静态调用有点麻烦,从动态调用中可以知道导出函数的名字,但是直接时(加入 lib 文件到工程文件)

  Linker 提示不能找到函数的实现

  从 4 看出,可以加入 def 文件连接

  (可以通过 impdef MyDll.def MyDll.dll 获得导出表)

  建立与 DLL 文件名一样的 def 文件与 lib 文件一起加入到工程文件

  上面的 DLL(VCWIN32.dll) 的 def 文件为(VCWIN32.def):

  LIBRARY   VCWIN32.DLL
IMPORTS
   @BCBLoadVCWin32Fastcall   = VCWIN32.@BCBLoadVCWin32Fastcall@0
   _BCBLoadVCWin32Cdecl    = VCWIN32.BCBLoadVCWin32Cdecl
   BCBLoadVCWin32Stdcall    = VCWIN32._BCBLoadVCWin32Stdcall@0

  对应的函数声明和实现如下:

  extern "C" __declspec(dllimport) LPSTR __fastcall BCBLoadVCWin32Fastcall();
extern "C" __declspec(dllimport) LPSTR __cdecl BCBLoadVCWin32Cdecl();
extern "C" __declspec(dllimport) LPSTR __stdcall BCBLoadVCWin32Stdcall();
void __fastcall TfrmStatic::btnLoadDllClick(TObject *Sender)
{
   ShowMessage ( BCBLoadVCWin32Fastcall() );
   ShowMessage ( BCBLoadVCWin32Cdecl() );
   ShowMessage ( BCBLoadVCWin32Stdcall() );
}

  注意:在 BCB 5.0 中,可能直接按下 F9 是不能通过 Linker 的,请先 Build 一次

  注:上面的程序使用 BCB 5.0 与 VC6.0 编译成功

责编:豆豆技术应用

正在加载评论...