在程序设计中常常需要使用其它编程语言写的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_Init@0 @2
然后使用VC自带的LIB程序将上一步生成的DEF文件创建一个LIB文件,命令格式为 LIB /DEF:XX.DEF ,执行这条指令后就生成了VC能使用的XX.LIB了。
要注意的是函数调用规则要统一。
方法二是使用OMF2COFF转换程序将BCB生成的lib文件转换为符合vc使用的lib文件。
最新评论