64位Delphi目标可以静态链接到已编译的C对象文件吗?

时间:2011-09-01 14:29:34

标签: delphi delphi-xe2

我的32位Delphi 2010应用程序使用$LINK编译器指令链接到许多C对象文件。在针对64位时,我可以在Delphi XE2中执行此操作吗?

我目前正在使用bcc32版本5.5进行编译,但如果发现Embarcadero C编译器还没有输出64位对象,我不介意使用哪个编译器。

2 个答案:

答案 0 :(得分:32)

是。您必须将“C”对象文件编译为COFF格式。这通常意味着Intel和/或MSVC ++编译器。同样的警告适用于适用于32位的64位目标文件链接。您必须确保通过提供具有该符号的另一个.obj或Delphi代码来正确解析所有外部引用。构建“C”代码时,请确保禁用任何堆栈检查或其他运行时验证代码生成。很多时候,这样的codegen依赖于给定工具的特定版本的C / C ++ RTL。

还有一点需要注意的是,虽然Delphi 64bit可以链接到COFF目标文件(最终它也将支持ELF64),但32位Delphi支持链接C ++ Builder内置的OMF目标文件,new到XE2,32位COFF目标文件,可以使用MSVC ++构建。同样的警告适用。

答案 1 :(得分:3)

是的,您可以链接到64位XE2项目中的OBJ文件,但OBJ文件必须是64位代码。