我正在处理从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
。
答案 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应用程序链接。