WisdomSoft - for your serial experiences.

プロジェクトの作成

C++/CX の構文を学習するために「Windows ストア アプリ」ではなく「空のプロジェクト」からコンソールアプリケーションとして C++/CX をビルドするための設定を紹介します。

C++/CX コンソールアプリケーション

通常 C++/CX は Windows ストアアプリケーションや Windows Runtime のコンポーネント開発プロジェクトで用いるものですが、従来のデスクトップ環境から C++/CX 及び Windows Runtime を利用することも可能です。本稿では C++/CX の構文を学習するために、コンソール用のプロジェクト(空のプロジェクト)から C++/CX で開発したコードをビルドします。C++/CX の純粋なプログラミング言語としての機能を学習するために、XAML などの雑音は取り除きます。

Visual Studio の「ファイル」メニューから「新規作成」→「プロジェクト」項目を選択し「新しいプロジェクト」ダイアログを表示します。

Visual Studio Express 2012 for Windows Desktop を使っている場合は「ファイル」メニューの「新しいプロジェクト」を選択してください。

図1 新しいプロジェクト
図1 新しいプロジェクト

左上のリストから「インストール済み」→「テンプレート」→「Visual C++」項目を選択し、中央のリストに表示された一覧から「空のプロジェクト」項目を選択します。任意の名前と場所、ソリューション名を入力して「OK」ボタンを押してください。

「ソリューション エクスプローラ」から生成されたプロジェクトを選択し、「プロジェクト」メニューの「プロパティ」項目を選択してください。もしくは、「ソリューション エクスプローラ」でプロジェクトを右クリックして、表示されたドロップダウンメニューから「プロジェクトを選択します。プロジェクトのプロパティダイアログが表示されます。

左のリストから「構成プロパティ」→「全般」を選択し、「文字セット」を「Unicode 文字セットを使用する」に変更します。

図2 構成プロパティ
図2 構成プロパティ

次に、左のリストから「構成プロパティ」→「C/C++」→「全般」を選択し、「Windows ランタイム拡張機能の使用」オプションを「はい(/ZW)」に変更します。これで C++/CX が有効になります。

図3
図

C++/CX は Windows Runtime の基礎機能にアクセスするために Windows メタデータと呼ばれるコンポーネントの情報を必要とします。C++ 開発者には、従来の LIB ファイルに近いものだと説明すると理解しやすいでしょう。Windows メタデータについては「WinRTとプログラミング言語」も参考にしてください。

「Windows ランタイム拡張機能の使用」オプションを「はい(/ZW)」に変更すると、自動的に C++/CX の基本機能を利用するために必要な Platform.winmd ファイルと Windows.winmd ファイルを自動的に参照します。そのため、これらの Windows メタデータが配置されているフォルダにパスが通っている必要があります。

Windows メタデータを参照するフォルダの追加は「追加の #using ディレクトリ」オプションを編集し、次の 2 つのパスを追加してください。パスは既定のインストール先です。ドライブ名などが異なる場合は、適切な名前に変更してください。

  • Windows.winmd - C:\Program Files (x86)\Windows Kits\8.0\References\CommonConfiguration\Natural
  • Platform.winmd - C:\Program Files (x86)\Microsoft SDKs\Windows\8.0\ExtensionsSDKs\Microsoft.VCLibs\11.0\References\CommonConfiguration\natural
図4
図4

また、「構成プロパティ」→「C/C++」→「コード生成」を選択し「最小リビルドを有効にする」を「いいえ (/Gm-)」に変更してください。この設定は「Windows ランタイム拡張機能の使用」オプションを「はい(/ZW)」にしている場合は使えません。

図5
図

これで C++/CX のコードをコンパイルするための基本的な設定は終了です。一般的なコンソールプロジェクトと同じように C++/CX コードをビルドし、結果をコマンドプロンプトに出力できます。