【问题标题】:Which Delphi Version supports which object file format?哪个 Delphi 版本支持哪种目标文件格式?
【发布时间】:2015-02-20 10:11:03
【问题描述】:

我正在为每个 delphi 版本搜索支持的目标文件格式列表。目标文件应与以下内容链接:{$L lib/object.o}

原因是我维护的项目在 Delphi7 中的链接器错误。该错误不会发生在编译器 > XE3 中。我只有 XE3 及以上版本要测试。

是否有人维护了一个列表或知道对一个列表的引用,我可以在其中找到有关支持的格式和/或更新版本的更改的信息,也许还有目标文件的问题等?

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

【问题讨论】:

    标签: delphi linker format object-files


    【解决方案1】:

    XE2 带来了变化,增加了对 COFF 对象格式的支持。之前的版本只支持 OMF 对象。

    添加对 COFF 支持的更改是由 XE2 中引入的新 64 位编译器驱动的。 Embarcadero 当时没有 64 位 C++ 编译器,因此需要链接另一个编译器生成的对象。他们选择使用发出 COFF 对象的 MS 编译器。

    Allen Bauer's answer 我提出的问题包含更多细节。

    实际上,这意味着对于 Delphi 7,您需要使用 bcc32 编译源代码。或者使用其他编译器编译 C 代码,然后链接到 DLL。

    【讨论】:

    • 谢谢,我希望这些信息对我项目的 D7 用户有所帮助。我把他和这个联系起来了。
    • 您是否有使用目标文件转换器的经验,例如:agner.org/optimize/#objconv?我应该建议这个吗?
    • 没有。建议用 bcc32 重新编译。也就是说,如果您想提出一条有成功前景的前进道路。任何人设法获得一个 mingw 对象来链接也是相当神奇的。我从来没有成功过,但也许那是因为我链接到 64 位。我自己的代码库对 32 位使用 bcc32,对 64 位使用 msvc。
    【解决方案2】:

    Delphi 10.1 Berlin 和 10.2 Tokyo 都支持 ELF64 格式,也支持 COFF。

    【讨论】:

      猜你喜欢
      • 2011-04-20
      • 2011-05-18
      • 2021-03-26
      • 2018-06-21
      • 2020-01-05
      • 2012-07-03
      • 2019-04-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多