13

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

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

4

2 回答 2

33

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

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

于 2011-09-01T18:12:14.487 回答
3

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

于 2011-09-01T17:00:12.323 回答