Delphi OMF格式到COFF格式

Delphi OMF格式到COFF格式,delphi,visual-c++,coff,omf,Delphi,Visual C++,Coff,Omf,有没有像Borland“coff2omf.exe”这样的工具可以将Borland OMF LIB格式转换为 MS VC++COFF库格式 实际上,我想在delphi中创建.obj文件,并在MSVC++中使用它。据我所知,没有这样的工具。使用Agner Fog的对象文件转换器(Arnaud提到的工具),我从未成功地将Delphi单元转换为可链接到MSVC程序的COFF.obj 我确实认为,获取Delphi源代码,编译它,然后在MSVC中使用生成的对象是不现实的。另一个方向是很有可能的。您可以将C代

有没有像Borland“coff2omf.exe”这样的工具可以将Borland OMF LIB格式转换为 MS VC++COFF库格式


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

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

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

但是,要将Delphi对象链接到C/C++程序中,需要使用delphirtl的任何部分。这将是一个棘手的问题,除非您碰巧没有使用DelphiRTL的任何部分,这似乎不太可能

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

将代码移植到C或C++。
  • 编译Delphi代码到动态库中,并与C++程序链接。
    是的,有这样一个工具

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

    请注意,这个网站是我所知道的关于低级优化的最佳资源。如果您想处理性能问题,所有链接信息都值得一读


    但是,如果用VC++使用Delphi生成的
    .obj
    ,这并不容易,只需要很小的一部分代码。您需要在代码中使用Delphi RTL。外部
    .dll
    更好。另外请注意,某些类型(如字符串或动态数组)在VC++中不易修改。

    :谢谢您的建议,但我认为这是可能的。我的一位老朋友完成了这项工作,他将delphi.obj转换为coff,并在vc++dll中用于AV引擎。(请原谅我英语不好)我从来没有找到任何有用的东西。我从来没能使Arnaud提到的工具与Borland OMF一起工作。你有使用此工具的经验吗?我从来没有运气,我玩了很多次。工作完美。但是大多数时候,你需要知道低级的asm,当然。我想当你把Pascal简化为不使用Delphi RTL的时候,把它移植到C就足够容易了!感谢所有我认为我的问题解决了:Microsoft linker和library manager可以从32位OMF转换为COFF。Microsoft编译器附带的Editbin工具可以从32位OMF转换为COFF并修改COFF文件。@DavidHeffernan你说得对:事实上,我用这个工具在Delphi程序中执行C代码,而不是相反。主要目的是使用良好的浮点计算(Delphi无法使用)、一些第三方库和/或一些低级asm/操作码(例如通过挂锁执行)。同样的.obj已经在Windows和Linux上使用过(当然没有任何PIC使用)。您的Delphi代码有多复杂?它是否使用Delphi RTL的任何部分?