E2045坏对象文件格式:" XXX.obj"

时间:2017-05-17 06:30:28

标签: c delphi linker 32bit-64bit delphi-10-seattle

我正在处理从x32位到x64的一个迁移项目。 我在这里使用这段代码:

{$L com_1.obj}
{$L com_is1.obj}
{$L com_2.obj}

但是在编译代码时我收到错误

[dcc64 Error] XXX.dpr(919): E2045 Bad object file format: 'E:\MyProj\com_sha.obj'

我无法追查其发生的原因。

是否由于32位obj文件用于编译x64位delphi项目?

如果是,我也尝试使用x64位环境创建一个obj文件。

有人可以帮我吗?

我正在使用Delphi 10 Seattle

2 个答案:

答案 0 :(得分:3)

您不能将32位对象与64位编译器一起使用。您必须使用64位编译器重新编译代码。

您可以使用许多不同的编译器来执行此操作。虽然我听说有人成功使用gcc但我从未设法做到这一点。我相信可以使用现代的基于Clang的Embarcadero编译器,但我个人没有这方面的经验。我一直使用Microsoft编译器来创建64位对象。当然,这就是Embarcadero自己为像zlib这样的库链接到RTL的方式。

答案 1 :(得分:2)

是的,您需要将这些.obj文件转换为64位。

Converting 32-bit Delphi Applications to 64-bit Windows州:

  
      
  • 64位外部.obj文件:如果您希望64位Windows应用程序链接到外部.obj文件,请记住您需要64位版本的.obj文件与64位Windows应用程序链接。
  •