4

VS2010 で新しい C++ プロジェクトを作成しました。新しいソリューション プラットフォームとして x64 を追加しました。「設定のコピー元」を「Win32」と「空」の両方に設定しようとしましたが、どちらも機能しませんでした。_AMD64_プラットフォームとして x64 を選択すると、定義されません。そうではないでしょうか?64ビット用にコンパイルするために私が知らない別のステップはありますか?

質問に備えて: 私は VS2010 Ultimate を使用しています。Windows 7 64 ビット、VS のインストール中に x64 コンパイラが選択されました。

4

1 に答える 1

6

すべての手順が正しく行われました。_AMD64_シンボルは、既定では Visual Studio によって事前定義されていません。使用する場合は、自分で定義する必要があります。

#if defined _M_X64 || defined _M_AMD64
    #define _AMD64_
#endif

しかし、あなたはその存在の記憶を作り上げていません。Windows DDK には、他のシンボルに加えて、このシンボルを定義するメイクファイルが付属しています。チェックインしmakefile.defます。可能性は次のとおりです。

  • _X86_
    x86、i386、および IA-32 としてさまざまに知られています
    (これは、VS の事前定義された と同じです_M_IX86)

  • _AMD64_
    AMD64、x64、x86-64、IA-32e、および Intel 64 としてさまざまに知られています(これは、VS の定義済みおよび と
    同じです)_M_X64_M_AMD64

  • _IA64_
    Intel Itanium (IA-64)
    (これは VS の事前定義されたものと同じです_M_IA64)

  • …そして、もはや誰もターゲットにしないアーキテクチャー向けの他のいくつか

理想的には、独自のコードで使用する一連の既知のマクロを事前定義するようにビルド システムを構成します。ビルド システムがない場合は、少なくともプリコンパイル済みヘッダー ファイルに何かを設定します。そうすれば、どこでも実装依存のシンボルに依存することはなく、コンパイラを切り替えるのも大変な作業ではありません。たとえば、GCC によって事前定義されたターゲット アーキテクチャのシンボルは、MSVC とは大きく異なります。

于 2013-07-20T11:23:38.757 に答える