bcbdlllib:VC中使用BCB写的DLL

在程序设计中常常需要使用其它编程语言写的dll,最近我就碰到这个问题,别人使用BCB写了的DLL,而我是使用VC写的程序,我的程序中需要调用这个DLL。按照常规的方法加入lib,然后添加声明,编译链接,总是出错“error LNK2001: unresolved external symbol __imp__xuexi_Close”,经过一番折腾,最后总算是可以使用了。

使用BCB写的DLL如果不做任何的修改是无论如何也没法在VC的程序中使用的。原因就是BCB生成的lib与VC的不一样;

有2个方法:方法一

     使用BCB自带的IMPDEF程序将生成的DLL导出一个DEF文件,命令格式为 IMPDEF XX.DEF  XX.DLL,其中的XX表示文件名,执行这个命令后会生成一个文件XX.DEF

LIBRARY     xuexi.dll

EXPORTS
    _xuexi_Close                 @1   

    _xuexi_Init                     @2   

     接着修改XX.DEF文件是符合VC规则如下

LIBRARY  "XUEXI"

DESCRIPTION  "XUEXI LIBRARY"

EXPORTS

    xuexi_Close@0    @1

    xuexi_Init@0       @2

    然后使用VC自带的LIB程序将上一步生成的DEF文件创建一个LIB文件,命令格式为 LIB /DEF:XX.DEF ,执行这条指令后就生成了VC能使用的XX.LIB了。

要注意的是函数调用规则要统一。

方法二是使用OMF2COFF转换程序将BCB生成的lib文件转换为符合vc使用的lib文件。

以上参考vchome资料库--DLL编程篇 

Tags:  regsvr32vc.dll vc调用dll vcdll bcbdlllib

延伸阅读

最新评论

发表评论