bcb implib.exe 转换出来的lib文件 总是1kb

萌虎生威 2017-09-22 09:49:31
coff2omf 转换也不行
...全文
457 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
这个是真正的自然美转换工具:http://www.agner.org/optimize/objconv.zip
ccrun.com 2017-09-22
  • 打赏
  • 举报
回复
一般说的lib,其实分两种,一种是静态库,包含了可执行代码本身,一种是动态库的引入库,只包含动态库导出符号的描述(我个人感觉这种库的后缀应该用.imp更科学一点),所以文件通常较小。
  • 打赏
  • 举报
回复
两个问题: 1. implib只能从32位dll导入。 2. coff2omf只能转换动态库lib,不能转换静态库lib。
ooolinux 2017-09-22
  • 打赏
  • 举报
回复
———————————————————— ———————————————————— 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 ———————————————————— ————————————————————

13,824

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧