torutkのブログ

ソフトウェア・エンジニアのブログ

Visual C++ 2010 Expressで64bitコンパイル

Visual C++ 2010 Expressは32bitコンパイルのみ提供されていますが、別途Windows SDKを追加することで、64bitコンパイルができるようになります。

Windows 7 Professional 64bitにVisual C++ 2010 Expressをインストールした状態

この時点で、新規プロジェクト(Win32コンソール)を作成し、「構成マネージャ」を開き、[アクティブソリューションプラットフォーム]欄(デフォルトで[Win32]が表示されている)をドロップダウンしても、他には<新規作成...>および<編集...>だけが選択可能です。64bitコンパイルに対応していると、x64が選択できるようになるはずです。

Windows SDKのインストール

Microsoft Windows SDK for Windows 7 and .NET Framework4」を入手します。

上記URLから、x64 ISOファイルである GRMSDKX_EN_DVD.iso をダウンロードし、インストールします。(CD-Rに焼くか仮想ドライブソフトを使う)

Visual C++ 2010 Expressの設定

「方法:Visual C++プロジェクトを64ビットプラットフォーム用に設定する」の手順(以下URL)に沿って設定します。

なお、Expressの場合、これだけではリンク時にエラーになってしまいます。この問題については、以下URLに解決方法がありました。

Expressから、先ほどインストールしたWindows SDK(Ver.7.1)を参照するように、次の設定を行います。

  • プロジェクトのプロパティで構成プロパティー全般を選択し、プラットフォームツールセットをv100からWindows7.1SDKに変更

これらの設定は、ソリューション(プロジェクト)ごとに行う必要があります。

Visual C++ 2010 ServicePack1の適用(2012/03/06追記)

からリンクをたどって、Visual Studio 2010SP1を入手します。

Visual Studio 2010 ServicePack 1を適用すると、Express版の場合64bitコンパイラが削除されてしまいます。Ultimate/Premium版などでは問題ないようですが、Express/Professional版では発生する問題のようです。

そこで、以下のパッチをダウンロードして適用します。

また、Visual Studio SP1を適用するより先にWindows SDKをインストールしておかないと、問題が発生するようです。

Visual Studio 2010 SP1 リリース ノート」より抜粋

Visual Studio 2010 SP1 をインストールした後で Windows SDK 7.1 がインストール、修復、または変更されると、Visual C++ コンパイラのインストールが失敗する

バイナリが64bitか判断する方法(2010/10/23追記)

に詳しい解説があるように、Visual Studio(Express版にもあり)付属のコマンドdumpbinを使うと確認できます。dumpbinを/headersオプション付きで実行し、FILE HEADER VALUESの最初の項目(machine)がx86かx64かで区別します。