OMF格式为COFF格式

问题描述:

是否有任何工具如Borland“coff2omf.exe”用于将Borland OMF LIB格式转换为 MS VC++ COFF LIB格式?OMF格式为COFF格式

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

+0

你的Delphi代码有多复杂?它是否使用Delphi RTL的任何部分? –

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

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

但是,将Delphi对象链接到C/C++程序将需要使用Delphi RTL的任何部分。除非你不使用Delphi RTL的任何部分,这似乎很难处理。

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

  1. 代码移植到C或C++。
  2. 将Delphi代码编译为一个动态库并链接到您的C++程序。
+0

:谢谢你的建议,但我认为这是可能的。我的一位老朋友完成了这项工作,他将delphi.obj转换为coff并用于vC++ dll中,用于AV引擎。 (请原谅我的英文不好) – Behrooz

+0

我从来没有找到任何有效的工具。我从未能够使Arnaud提到的工具与Borland OMF一起工作。 –

是的,有这样的工具。

请参阅this tool

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

请注意,这个网站是我了解低级优化的最佳资源。如果要处理性能,所有链接的信息都值得一读。

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

+0

您有使用此工具的经验吗?我从来没有运气过。 –

+1

我玩了很多时间。完美的作品。但是大多数情况下,当然,你需要知道低级别的东西。 –

+0

我想,当你将Pascal切换到不使用Delphi RTL的时候,很容易将它移植到C! –