13

私の 32 ビット Delphi 2010 アプリケーションは、$LINKコンパイラ ディレクティブを使用して多数の C オブジェクト ファイルにリンクしています。64 ビットを対象とする場合、Delphi XE2 でこれを行うことはできますか?

現在、bcc32 バージョン 5.5 を使用してコンパイルしていますが、Embarcadero C コンパイラがまだ 64 ビット オブジェクトを出力しないことが判明した場合、使用するコンパイラを気にしません。

4

2 に答える 2

33

はい。「C」オブジェクト ファイルを COFF 形式にコンパイルする必要があります。これは通常、Intel および/または MSVC++ コンパイラのいずれかを意味します。32 ビットに適用される 64 ビット オブジェクト ファイルのリンクにも同じ注意事項が適用されます。そのシンボルを持つ別の .obj を提供するか、Delphi コードから、すべての外部参照が適切に解決されていることを確認する必要があります。「C」コードをビルドするときは、スタック チェックやその他のランタイム検証コード生成を無効にしてください。多くの場合、そのような codegen は、特定のツールの 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 に答える