c语言dll bcb,求吧友分享 BCB调用VC动态库实例

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

VC与BCB库文件之间的转换问题

VC++的.lib有两种:一种是静态DLL,其中包括函数的实际代码,一种是有DLL生成的.lib,其中并不包含代码,只是包含DLL的链接信息。对于后一种比较简单,只需要使用C++ Builder中的命令行工具implib直接对DLL进行进行转换就可以了。

只有前一种才存在你说的转换问题。另外一点要看.lib中的内容,如果是普通的C语言函数,可以转换,如果是C++类,则不能直接转换为DLL,因为即使你直接编译为DLL,也只有VC的程序才能使用(那何必费这事),即使C++ Builder也不能调用,你必须把类转换为普通的C语言函数,才能供其他函数调用。

经常碰到类似:BCB contains invalid OMF record,type 0x21(possibly COFF)错误,该错误是由于BCB使用VC的lib兼容不足导致。

解决方法(1):从vc生成的动态库导出c++builder可用的导入库(注意:不是静态库),在Borland目录下找到Borland\CBuilder6\Bin里面有一个implib.exe,它可以将VC的DLL转译为BCB的lib;你只需将VC的DLL拷贝到该同级目录下,编写一个.bat文件:implib -af XXX.lib XXX.dll 就会将XXX.dll编译成BCB的XXX.lib再将此lib拷贝到应用程序工作目录下就可以正常运行了

解决方法(2):把vc生成的静态库(注意:不是导入库)转换成c++builder可用的静态库;在Borland目录下找到Borland\CBuilder6\Bin里面有一个coff2omf.exe,先把需要转换的VC的ml.lib放在C盘根目录下,然后生成新的C++Builder格式下的ml1.lib文件,在命令行:

coff2omf -lib:ms c:/ml.lib bcb c:/ml1.lib

————————————————————

————————————————————

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值