次の方法で共有


64 ビット アプリケーション

アプリケーションをコンパイルするときに、ネイティブ アプリケーションとして、または WOW64 (Windows 64 ビット版の Windows 32 ビット) で Windows 64 ビット オペレーティング システムで実行するように指定できます。 WOW64 は、32 ビット アプリケーションを 64 ビット システムで実行できる互換性環境です。 WOW64 は、Windows オペレーティング システムのすべての 64 ビット バージョンに含まれています。

Windows での 32 ビット アプリケーションと 64 ビット アプリケーションの実行

.NET Framework 4 以降のバージョンで構築された 32 ビット アプリケーションは、64 ビット システム上の WOW64 で実行されます。

Itanium プロセッサ ファミリ用の x86 エミュレーションと WOW64 サブシステムの設計により、アプリケーションは 1 つのプロセッサでの実行に制限されます。 これらの要因により、Itanium ベースのシステムで実行される 32 ビット .NET アプリケーションのパフォーマンスとスケーラビリティが低下します。 パフォーマンスとスケーラビリティを向上させるために、Itanium ベースのシステムに対するネイティブの 64 ビット サポートを含む .NET Framework 4 以降を使用することをお勧めします。

既定では、64 ビットの Windows オペレーティング システムで 64 ビットマネージド アプリケーションを実行する場合、2 ギガバイト (GB) 以下のオブジェクトを作成できます。 ただし、.NET Framework 4.5 以降では、この制限を引き上げることができます。 詳細については、 <gcAllowVeryLargeObjects> 要素を参照してください。

多くのアセンブリは、32 ビット CLR と 64 ビット CLR の両方で同じように実行されます。 ただし、CLR に応じて、次のプログラムが 1 つ以上含まれている場合、一部のプログラムの動作が異なる場合があります。

  • プラットフォーム (ポインター型など) に応じてサイズを変更するメンバーを含む構造体。
  • 定数サイズを含むポインター算術演算。
  • Int32ではなくハンドルにIntPtrを使用する不適切なプラットフォーム呼び出しまたは COM 宣言。
  • IntPtrInt32にキャストするコード。

32 ビット アプリケーションを 64 ビット CLR で実行するように移植する方法の詳細については、「 32 ビットマネージド コードを 64 ビットに移行する」を参照してください。

一般的な 64 ビット プログラミング情報

64 ビット プログラミングの一般的な情報については、次のドキュメントを参照してください。

64 ビット アプリケーションの作成に対するコンパイラのサポート

既定では、.NET を使用して 32 ビットコンピューターまたは 64 ビット コンピューターでアプリケーションをビルドすると、アプリケーションはネイティブ アプリケーション (WOW64 ではなく) として 64 ビット コンピューターで実行されます。 次の表に、Visual Studio コンパイラを使用して、ネイティブ、WOW64、またはその両方で実行される 64 ビット アプリケーションを作成する方法を説明するドキュメントを示します。

コンパイラ コンパイラ オプション
Visual Basic -プラットフォーム (Visual Basic)
Visual C# -platform (C# コンパイラ オプション)
Visual C++ /clr:safe を使用して、プラットフォームに依存しない共通中間言語 (CIL) アプリケーションを作成できます。 詳細については、「 -clr (共通言語ランタイムのコンパイル)」を参照してください。

Visual C++ には、64 ビット オペレーティング システムごとに個別のコンパイラが含まれています。 Visual C++ を使用して 64 ビット Windows オペレーティング システムで実行されるネイティブ アプリケーションを作成する方法の詳細については、「 64 ビット プログラミング」を参照してください。

.exe ファイルまたは .dll ファイルの状態の確認

.exe ファイルまたは .dll ファイルが特定のプラットフォームでのみ実行されるか、WOW64 の下で実行されるかを判断するには、オプションなしで CorFlags.exe (CorFlags 変換ツール) を使用します。 CorFlags.exe を使用して、.exe ファイルまたは .dll ファイルのプラットフォームの状態を変更することもできます。 Visual Studio アセンブリの CLR ヘッダーには、メジャー ランタイム バージョン番号が 2 に設定され、マイナー ランタイム バージョン番号が 5 に設定されています。 マイナー ランタイム バージョンが 0 に設定されているアプリケーションは、レガシ アプリケーションとして扱われ、常に WOW64 で実行されます。

プログラムで .exe または .dll にクエリを実行して、特定のプラットフォームでのみ実行するか、WOW64 で実行するかを確認するには、 Module.GetPEKind メソッドを使用します。