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

Dav*_*nan 12 delphi delphi-xe2

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

我目前正在使用bcc32版本5.5编译,但我不介意我使用哪个编译器,如果它证明Embarcadero C编译器还没有输出64位对象.

All*_*uer 32

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

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

  • 还值得一提的是,System.Win.Crtl.pas单元为链接在.obj文件中链接时所需的许多基本C运行时例程提供了支持.该单元是RTL包的一部分.在使用之前,请参阅源文件中的comments/disclaimer/warning.:) (6认同)