该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
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
————————————————————
————————————————————