4

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

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

4

2 回答 2

7

是的,有这样的工具。

请参阅此工具

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

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

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

于 2013-06-03T09:04:32.613 回答
4

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

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

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

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

  1. 将代码移植到 C 或 C++。
  2. 将 Delphi 代码编译成动态库并从 C++ 程序链接到该动态库。
于 2013-06-03T08:37:28.263 回答