将COFF lib文件转换为OMF格式

时间:2010-06-24 22:20:57

标签: c++ c++builder omf

有没有办法将COFF库(lib文件)转换为OMF库以便与C ++ Builder6一起使用?这个coff不仅仅是导入库,还包含一些代码。 当我尝试使用borland的coff2omf.exe转换它时,我从15KB文件中获取1KB文件。

5 个答案:

答案 0 :(得分:6)

您可以使用http://agner.org/optimize

上提供的对象文件转换器代替DigitalMars转换器
  

该实用程序可用于在COFF / PE之间转换目标文件,   适用于所有32位和64位x86平台的OMF,ELF和Mach-O格式。   可以修改目标文件中的符号名称。可以构建,修改和转换   跨平台的函数库。可以转储目标文件和   可执行文件。还包括一个非常好的反汇编支持   SSE4,AVX,AVX2,FMA和XOP指令集。源代码   包括(GPL)。

这是一个很好的低级优化网站,associated manual pdf file中有很多有用的信息,涉及多个平台的图书馆格式。

答案 1 :(得分:3)

OMF对象文件比同等COFF对象小 lot 是相当典型的,所以你得到的可能是有效的。

如果您发现它确实没有,您可以将lib文件分解为单个目标文件,反汇编目标文件,将它们重新组装到OMF目标文件中,然后将它们放在一个OMF lib文件中。

答案 2 :(得分:2)

这已经相当晚了,但如果有人在寻找答案,您可以从DigitalMars结帐COFFIMPLIB。 COFF2OMF可以在同一个站点上找到,但它看起来比较旧。

答案 3 :(得分:1)

整合Delphi(omf)和Ada(gcc,coff)需要付出很多努力,直到我放弃在单个exe中完成它。

老实说,我试图将gcc rtl和ada rtl .a(coff库)分解成许多.o(对象),通过coff2omf转换它们(有DMD coff2omf和iirc另一个convobj左右)。一些coff .o未能转换为.obj,所以我不能说它是否是一种可靠的方式。

当异常和其他深层细节需要时,汇编程序级别转换并不那么简单。

遗憾的是我没有尝试过一个名为的工具 ftp://ftp.styx.cabel.net/pub/UniLink/

这并不明显,但UniLink可能可用于实现目标。其目标之一是C ++ Builder包(动态和静态)。 unilink -Tpp -GI应该做的伎俩

答案 4 :(得分:0)

值得注意的是,在较新版本的Delphi(> = XE2)中,编译器接受COFF以及OMF。对于C ++ Builder来说可能也是如此。 64位编译器仅使用COFF。 有关链接COFF的更多信息,请参阅here