有没有办法将Delphi .dcu文件转换为.obj文件,以便可以使用像GCC这样的编译器进行链接?我没有使用Delphi几年,但是如果有可能的话,我想再次使用if.
Bar*_*lly 14
Delphi可以输出.obj文件,但它们是Intel OMF的32位变体.另一方面,GCC与ELF(Linux,大多数Unix),COFF(在Windows上)或Mach-O(Mac)一起使用.
但仅凭这一点还不够.在不使用运行时库的情况下编写很多代码很困难,并且运行时库的实现将依赖于编译器和链接器体系结构的低级细节,例如正确的初始化顺序.
而且,兼容性不仅仅是目标文件格式; 特别是Linux上的代码需要与位置无关,这意味着它不能使用绝对值来引用全局符号,而是必须从寄存器或相对于指令指针索引其所有全局数据,以便代码可以在内存中重新定位而无需重写引用.
DCU文件是Delphi符号表的序列化和为每个proc生成的代码,因此高度依赖于编译器的实现细节,编译器从一个版本更改为下一个版本.
所有这一切都是说你不可能获得很多链接到GNU环境的Delphi(dcc32)代码,除非你把自己限制在绝对最小的非托管数据类型(没有字符串,没有接口)和程序代码(没有类,没有初始化部分,没有需要初始化的数据等)
| 归档时间: |
|
| 查看次数: |
2193 次 |
| 最近记录: |