我的32位Delphi 2010应用程序使用$LINK
编译指令链接到一些C对象文件。如果我要将目标指向64位,我可以在Delphi XE2中这样做吗?
我目前正在使用bcc32版本5.5进行编译,但是如果Embarcadero C编译器还没有输出64位对象,我不介意使用其他编译器。
我的32位Delphi 2010应用程序使用$LINK
编译指令链接到一些C对象文件。如果我要将目标指向64位,我可以在Delphi XE2中这样做吗?
我目前正在使用bcc32版本5.5进行编译,但是如果Embarcadero C编译器还没有输出64位对象,我不介意使用其他编译器。
是的。您必须将“C”对象文件编译成COFF格式。这通常意味着使用Intel和/或MSVC ++编译器。在链接64位目标文件时,与32位相同的注意事项适用。您必须确保所有外部引用都得到正确解析,可以通过提供具有该符号的另一个.obj文件或从Delphi代码中解析。在构建“C”代码时,请确保禁用任何堆栈检查或其他运行时验证代码生成。许多时候,这种代码生成依赖于给定工具的特定版本的C / C ++ RTL。
值得注意的另一点是,虽然Delphi 64位可以链接到COFF对象文件(最终还将支持ELF64),但32位Delphi支持与C ++ Builder生成的OMF对象文件链接,以及新的XE2,32位COFF对象文件,它可以使用MSVC ++构建。适用相同的注意事项。
是的,您可以在64位XE2项目中链接到OBJ文件,但OBJ文件必须是64位代码。