x64形式の実行ファイルを作成する

VisualStudio のデフォルトで「新規プロジェクト」を作成すると、AnyCPU 形式の実行ファイル(EXE)ができあがります。

昔は、x86 のCPUと x64 のCPUのシェアが半々だったので、どちらのCPUでも動く AnyCPU な実行ファイルをデフォルトで作成するようにしておくのがよかったのでしょう。

コンピュータの中だけでおさまるようなプログラムだけならば AnyCPU 形式の実行ファイルを作るので問題ありません。実行速度についても負荷のかかることをしなければ x86 のCPU、x64 のCPUどちらであっても速度の違いを体感することはありません。

しかし、コンピュータの PCI バスや、PCI-Express バスなどに、デジタル入出力ボードや画像入力ボードを挿入して使う場合には、AnyCPU ではなく、x64形式で実行ファイルを作成することが必須になります。

本記事では x64 形式の実行ファイルを作成する手順を示します。熟練者には直接プロジェクトのファイルを書き換えるのが簡単なのですが、ここでは、すべて VisualStudio の GUI で設定していく方法を示します。

おおまかな作業の流れは下記です。

(0) AnyCPU のビルド設定から x64 のビルド設定を複製する.
(1) AnyCPU と x64 のビルド設定が並立している状態になる.
(2) AnyCPU のビルド設定を削除する.
(3) x64 のビルド設定だけになる.

となるように作業をします。

Fig.1 メニューバー [ビルド]...[構成マネージャ] を実行します。

Fig. 1 構成マネージャーを開く

Fig. 2 デフォルトの状態は AnyCPU しかありません。アクティブソリューションプラットフォームの AnyCPU の下に <新規作成...> というメニューがあるのでそれを選びます。

Fig. 2 アクティブソリューションプラットフォームに AnyCPU しかない状態

Fig. 3 <新規作成...> を選んだら、新しいソリューションプラットフォームというダイアログが現れます。そこで、新しいプラットフォームとして x64 を選んでください。「新しいプロジェクトプラットフォームを作成する」のチェックボックスにチェックを入れてください。デフォルトではすでにチェックが入っていると思います。チェックをいれたら [OK] ボタンを押してください。

Fig. 3 AnyCPU から新しいソリューションプラットフォーム x64 を複製する

Fig. 4 は、AnyCPUのプラットフォーム設定を x64 に複製して、それらが二つ存在することを示しています。

Fig. 4 AnyCPU を複製して x64 が作成された状態

Fig. 5 は、x64 のプラットフォーム設定ができあがったので AnyCPU は不要になります。それを削除する寸前の状態です。ここで AnyCPU を選んで [削除] のボタンを押します。

Fig. 5 AnyCPU が不要になったので削除する寸前の状態

Fig. 6 は AnyCPU を削除したので x64 しかない状態です。

Fig. 6 AnyCPU が削除された状態

ここで終わりになるような気もしますが、まだ終わりではありません。

Fig. 7 プラットフォームの設定には AnyCPU と x64 がまだ残っています。ここで <編集...> を押して、AnyCPU を削除します。

Fig. 7 プラットフォームからに AnyCPU と x64 どちらも存在する状態

Fig. 8 <編集...> を押すと「プロジェクトプラットフォームの編集」というダイアログが現れます。ここで AnyCPU を選択して [削除] のボタンを押します。

Fig. 8 プラットフォームから AnyCPU を削除する寸前の状態

Fig. 9 [削除]のボタンを押すと AnyCPU を削除しますか?という確認ダイアログが表示されるので [はい] を押します。

Fig. 9 AnyCPU を削除する寸前に確認ダイアログが出現した状態

ここで、プロジェクトのビルド設定から AnyCPU をすべて追い出して、x64 形式の実行ファイルが生成できるようになりました。

とはいえ、本当に x64 を生成する設定ができているのかどうかGUIの見た目ではわからないので、これから確認していきます。

Fig. 10 メニューバー [ビルド]...[バッチ ビルド] を実行します。

Fig. 10 バッチビルドのダイアログを開く

Fig. 11 に示すバッチビルドのダイアログが現れます。

プラットフォームが x64 のみで、ソリューション構成が Debug|x64と、Release|x64 だけであることを確認してください。このダイアログのどこかに AnyCPU という表示が出ていたら、それはまだ AnyCPU の設定が残っていることになります。

AnyCPUの設定が残っているとまぎらわしいので、Fig. 5 または Fig. 8 に示す手順に戻って AnyCPU を削除してください。

Fig. 11 プラットフォームとソリューション構成が x64 だけの状態

Fig. 12 ソリューションエクスプローラのプロジェクト構成の Properties をダブルクリックするか、メニューバーの [プロジェクト]...[xxxのプロパティ]をクリックして、ビルドのプロパティを表示させます。

構成を [Debug] にして、プラットフォームを [アクティブな(x64)]にしてください、そのとき対象プラットフォームが "x64" であることを確認してください

出力パスは "..¥out¥x64¥Debug¥" に書き換えてください。ここに実行ファイルが生成されます。この生成ディレクトリは開発者それぞれの好みでかまいませんが、パスに AnyCPU という記述を含めるとわけがわからなくなるので避けてください。

"ドットドット¥out¥x64¥Debug¥" です。ドットは2個です。

Fig. 12 Debugビルドの設定

Fig. 13 構成のところを [Debug] から [Release] に選択しなおします。そのときも対象プラットフォームが "x64" であることを確認してください。

出力パスは "..¥out¥x64¥Release¥" に書き換えてください。ここに実行ファイルが生成されます。

"ドットドット¥out¥x64¥Release¥" です。ドットは2個です。

Fig. 13 Releaseビルドの設定

Fig. 14 ふたたび、メニューバー [ビルド]...[バッチ ビルド] で、バッチビルドダイアログを表示します。[ビルド]のところにチェックがはいっていないので、[すべて選択] のボタンを押してチェックを入れます。マウスでいちいちチェックを入れても構いません。

Fig. 14 バッチビルドの確認

Fig. 15 どちらにもチェックをいれたら、[リビルド]のボタンを押してください。押した瞬間にビルドが始まります。

Fig. 15 リビルドの寸前の状態

Fig. 16 ダイアログが閉じると、ビルドしている状況が刻々と出力ウインドウに表示されていると思います。高速なパソコンだと一瞬でリビルドがおわるので、すでにビルド完了の状態になっているかもしれません。

ここの表示が「すべてリビルド: 2 正常終了」となっていることに注目してください。

ここの 2 という数字は Fig. 15 でチェックを入れた個数です。もしチェックが一つだったら、チェックをいれた構成のビルドしか実施しないことになります。

Fig. 16 リビルドが正常終了したときのコンパイラ出力

Fig. 17 いちおう x64 形式で Debug ビルドの実行ファイルが出力されたか確認します。ここの出力パスは Fig. 12 で設定した出力パスです。本記事では、プロジェクトファイル *.vcproj の2個上の階層のディレクトリに実行ファイルが出来上がります。

Fig. 17 デバッグビルドの出力ディレクトリにEXEが生成された

Fig. 18 Debug ビルドと同様に x64 形式で Relase ビルドの実行ファイルが出力されたか確認します。ここの出力パスは Fig. 13 で設定した出力パスです。

Fig. 18 リリースビルドの出力ディレクトリにEXEが生成された

以上が x64 の実行ファイルを作成する方法です。お疲れさまでした。

下記のページで、実行ファイルを出力するディレクトリはどこがいいか考察しています。よろしければごらんください。

実行ファイルEXEを出力するディレクトリについて考える

実行ファイルの動作プラットフォーム別の最適なディレクトリ出力先について考察します。