c++ 正在将COFF库文件转换为OMF格式

q5lcpyga  于 2022-12-20  发布在  其他
关注(0)|答案(5)|浏览(261)

有没有办法把COFF库(lib文件)转换成OMF库,以便在C++Builder6中使用?这个COFF不仅仅是导入库,它包含了一些代码。当我尝试用borland的coff2omf.exe转换它时,我从15KB文件得到了1KB文件。

yv5phkfx

yv5phkfx1#

集成 Delphi (omf)和Ada(gcc,coff)需要大量的工作,直到我放弃在单个exe中完成。
老实说,我试过把gcc rtl和ada rtl .a(coff库)分解成很多.o(对象),通过coff 2 omf转换它们(有DMD coff 2 omf和iirc另一个convobj之类的)。一些coff .o没有转换成.obj,所以我不能说这是一个可靠的方法。
当涉及异常和其他深层细节时,汇编级转换就不那么简单了。
很遗憾我没有尝试过一个名为ftp://ftp.styx.cabel.net/pub/UniLink/的工具
这并不明显,但UniLink可能可以用来实现这个目标。它的目标之一是C++ Builder包(动态和静态)。unilink-Tpp-GI应该可以做到这一点

6rqinv9w

6rqinv9w2#

您可以使用http://agner.org/optimize上提供的 * 对象文件转换器 * 来代替DigitalMars转换器
此实用程序可用于在所有32位和64位x86平台的COFF/PE、OMF、ELF和Mach-O格式之间转换目标文件。可以修改目标文件中的符号名称。可以跨平台构建、修改和转换函数库。可以转储目标文件和可执行文件。还包括一个非常好的反汇编程序,支持SSE 4、AVX、AVX 2、FMA和XOP指令集。包括源代码(GPL)。
这是一个很好的底层优化网站,associated manual pdf file中有很多有用的信息,关于跨平台的库格式。

p8h8hvxi

p8h8hvxi3#

OMF对象文件通常比等效的COFF对象小 * 很多 *,因此您得到的可能是有效的。
如果您发现确实不是这样,您可以将lib文件分解为单独的对象文件,分解这些对象文件,将它们重新组装为OMF对象文件,然后将这些对象文件一起放入OMF lib文件中。

6ovsh4lw

6ovsh4lw4#

这是相当晚了,但如果有人正在寻找答案,你可以从DigitalMars检查COFFIMPLIB。COFF2OMF在同一网站上可用,但它看起来更老。

9bfwbjaz

9bfwbjaz5#

值得注意的是,在 Delphi 的更新版本(〉= XE2)中,编译器接受COFF和OMF。C++ Builder可能也是如此。64位编译器只使用COFF。有关链接COFF的更多信息,请参见here

相关问题