VC中使用BCB写的DLL
2009-10-08 14:55
204 查看
在程序设计中常常需要使用其它编程语言写的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编程篇
使用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编程篇
相关文章推荐
- 让vc编译的zlib生成的dll在BCB以静态链接的方式使用
- 怎样在BCB中使用VC的dll
- BCB下使用的VC生成的DLL
- 使用CString的方法(以及用VC写DLL中"error LNK2005: _DllMain@12 already defined"的解决办法)
- [C] 跨平台使用TCHAR——让Linux等平台也支持tchar.h,解决跨平台时的格式控制字符问题,多国语言的同时显示(兼容vc/gcc/bcb,支持Windows/Linux/Mac)
- 使用 .DLL .LIB 的问题(针对VC)
- VC调用vbscript.dll使用其正则表达式库
- VC++使用纯资源Dll
- VC下动态库dll,静态库lib的编写和使用方法
- vc与bcb的dll的调用问题
- VC工程-设置里的使用MFC作为共享的DLL和使用MFC作为静态链接库 二者区别
- BCB生成dll被VC调用的帖子收集
- mingw如何使用VC编译的dll
- vc 创建与使用 dll
- VC.Net中创建与使用静态链接库(lib)和动态链接库(dll),以及它们的区别
- Qt532_QWebView做成DLL供VC/Delphi使用_Bug
- VC2005编译SQLite,生成WINCE上使用的DLL和Lib
- VC调用vbscript.dll使用其正则表达式库
- [C] 跨平台使用TCHAR——让Linux等平台也支持tchar.h,解决跨平台时的格式控制字符问题,多国语言的同时显示(兼容vc/gcc/bcb,支持Windows/Linux/Mac)
- [C] 跨平台使用TCHAR——让Linux等平台也支持tchar.h,解决跨平台时的格式控制字符问题,多国语言的同时显示(兼容vc/gcc/bcb,支持Windows/Linux/Mac)