OMF格式为COFF格式

时间:2013-06-03 08:22:59

标签: delphi visual-c++ coff omf

是否有像Borland“coff2omf.exe”这样的工具用于将Borland OMF LIB格式转换为 MS VC ++ COFF LIB格式?

实际上我想在delphi中创建.obj文件并在MSVC ++中使用它。

2 个答案:

答案 0 :(得分:7)

是的,有这样的工具。

请参阅this tool

  

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

请注意,此http://www.agner.org网站是我了解的有关低级优化的最佳资源。如果你想处理表现,所有链接的信息都值得一读。

但是对于在VC ++中使用Delphi生成的.obj,它不是很容易实现,而是用于非常小的代码部分。您将需要代码中使用的Delphi RTL。外部.dll要好得多。另请注意,VC ++中的某些类型(如字符串或动态数组)不易修改。

答案 1 :(得分:4)

据我所知,没有这样的工具。使用Agner Fog的目标文件转换器,Arnaud引用的工具,我从未成功将Delphi单元转换为可以链接到MSVC程序的COFF .obj。

我确实认为采用Delphi源代码,编译它,然后在MSVC中使用生成的对象是不现实的。另一个方向很可能。您可以将C代码编译为对象,并将该对象链接到Delphi可执行文件。执行此操作时,您需要解决编译对象具有的任何依赖项。

但是要将Delphi对象链接到C / C ++程序,将需要使用Delphi RTL的任何部分。除非你碰巧不使用Delphi RTL的任何部分,这似乎很棘手,这似乎不太可能。

在您的情况下,我认为您的选择是:

  1. 将代码移植到C或C ++。
  2. 将Delphi代码编译到动态库中,并链接到C ++程序中的代码。