哪个Delphi版本支持哪种目标文件格式?

3

我正在寻找每个Delphi版本所支持的对象文件格式列表。对象文件应该与如下内容进行链接:{$L lib/object.o}

我之所以这样做是因为我维护的一个项目在Delphi7中有一个链接器错误。这个错误在编译器>XE3中不会发生。我只能使用XE3及以上版本进行测试。

是否有人维护过这样的列表或者知道一个参考文献,可以找到关于支持格式和/或新版本更改的信息,也许还有关于对象文件的问题等?

我想要解决这个问题(lz4-delphi issue)并帮助项目的用户。

2个回答

3
这个变化发生在XE2版本中,它增加了对COFF目标文件格式的支持。之前的版本只支持OMF目标文件。
添加COFF支持的变化是由XE2引入的新64位编译器所驱动的。当时Embarcadero没有64位C++编译器,因此需要链接另一个编译器生成的目标文件。他们选择使用微软编译器生成COFF目标文件。 Allen Bauer's answer 是我提出的一个问题的答案,包含更多细节。
实际上,这意味着对于Delphi 7,您需要使用bcc32编译源代码。或者使用其他编译器编译C代码,然后链接到DLL。

谢谢,我希望这些信息能够帮助我的项目的D7用户。我已经将链接发给他了。 - Hugie
你有使用过像 http://agner.org/optimize/#objconv 这样的目标文件转换器的经验吗?我应该建议使用它吗? - Hugie
不,建议使用 bcc32 重新编译。这样才有成功的可能性。而且,任何人都能让 mingw 对象链接起来相当神奇。我从未成功过,但也许是因为我链接到了64位。我的代码库使用 bcc32 用于 32 位和 msvc 用于 64 位。 - David Heffernan

1

作为参考,Delphi 10.1 Berlin和10.2 Tokyo都支持ELF64格式和COFF。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接