c - Delphi dcu 到 obj

标签 c delphi

有没有办法将 Delphi .dcu 文件转换为 .obj 文件,以便可以使用 GCC 等编译器进行链接?我已经有几年没有使用 Delphi 了,但如果可能的话,我想再次将 if 用于一个项目。

最佳答案

Delphi 可以输出 .obj 文件,但它们是 Intel OMF 的 32 位变体。另一方面,GCC 适用于 ELF(Linux,大多数 Unix)、COFF(在 Windows 上)或 Mach-O(Mac)。

但仅此还不够。不使用运行时库很难编写很多代码,运行时库的实现将依赖于编译器和链接器架构的低级细节,例如正确的初始化顺序。

此外,兼容性不仅仅是目标文件格式;特别是 Linux 上的代码需要位置无关,这意味着它不能使用绝对值来引用全局符号,而是必须从寄存器或相对于指令指针索引其所有全局数据,以便代码可以在不重写引用的情况下在内存中重新定位。

DCU 文件是 Delphi 符号表和为每个 proc 生成的代码的序列化,因此高度依赖于编译器的实现细节,编译器从一个版本到下一个版本都会发生变化。

所有这一切都是说,除非您将自己限制在绝对最小的非托管数据类型(没有字符串,没有接口(interface))和过程代码(没有类,没有初始化部分,没有需要初始化的数据等)

关于c - Delphi dcu 到 obj,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3695946/

相关文章:

delphi - 阻塞套接字会触发哪些事件?

delphi - 从 Delphi 2009 升级的原因

delphi - 如何销毁动态创建的Tchromium(Delphi)组件?

c - 用 C 实现类

c - 双指针和结构

c - c 中的 short 和 int

delphi - “从未使用过的值”更改为 'variable not initialized'

delphi - 如何测量内存使用情况

c - 从特定格式解析值的建议

C strstr 无法正常工作