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