#はじめに
ネット上で入手できるC++/CXの記述はだいたいWin8の環境で使用されるもので、Win10用、つまりはUWP環境用のものがなかった。せっかくVS2017が公開されたのだから、それに対応した形で"あえて"コンソールHello Worldの出し方を記述しておく。
##導入
Microsoftのサイトから「Visual Studio 2017 Community edition」のインストーラをダウンロードする。個人の学習用なら無償でおーけーである。
それを実行するとローカル上でインストーラそのものがインストールされるので、そこからC++に絡むものをだいたい入手する。
上記の枠で囲った部分にチェックを入れると、右枠に「ユニバーサルWindowsプラットフォーム開発」の項目が出るので、ここの中から「C++ ユニバーサル Windows プラットフォームツール」にチェックを入れておく。
とりあえずインストールにはかなりのストレージ容量が必要になるので空き容量を確認しておくこと。
##設定
インストールが完了し無事Visual Studio 2017を立ち上げられたら、新しいプロジェクトからVisual C++内にある空のプロジェクトを選択する。
※プライバシー保護のためプロジェクトが入るフォルダを隠しています。
※記事のために試験的にproject1を作成済みです。
ここでは仮に「helloworld-cxx」というプロジェクト名を入れて作ることにする。
そうすると空のプロジェクトをひとつ含んだソリューションが作成されるが、このままプロジェクトのプロパティを選んでもC/C++の項目が出ないので、ソースファイルにcppファイルを追加しておく。
cppファイルを追加したら、プロジェクトのプロパティで以下の設定をしておく。
- 構成プロパティの全般タブにある**「文字セット」を「Unicode文字セットを使用する」**に
- C/C++の全般タブにある**「Windowsランタイム拡張機能の使用」を「はい(/ZW)」**に
- C/C++のコード生成タブにある**「最小リビルドを有効にする」を「いいえ(/gm-)」**に
ここまでの設定はWindows 8でC++/CXを使用する場合と一緒なので画像の説明は省略。
あとはwindows.winmdとplatform.winmdのファイル先のある場所を「C/C++の全般タブにある追加の#usingディレクトリ」に入れればいいのだが、Windows10環境だとファイルの場所が異なる。
仮に64bit環境でVisual StudioをProgram Filesフォルダ以下に入れている場合、
- windows.winmdは"C:\Program Files (x86)\Windows Kits\10\UnionMetadata"に、
- platform.winmdは"C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.10.25017\lib\x86\store\references"に、
それぞれ存在する。
32bit環境なら(x86)がないはずなのでその以下のフォルダを探ればよいだろう。
あとは「リンカーの詳細設定タブにあるエントリーポイントにmainCRTStartupと入力」して設定終了である。
##Hello World!する
とりあえず以下のコードを作成したcppファイルに打ち込んで保存してビルドすればコンソールに表示されるはず。
#include <iostream>
int main(Platform::Array<Platform::String^>^ args)
{
Platform::Details::Console::WriteLine(L"Hello world!");
system("pause");
return (0);
}
##ポイント
- C++/CXでは、main関数の引数に"Platform::Array<Platform::String^>^ args"を指定しないとwarningが出る。これを入力すると今度はエントリーポイントがないと怒られるので、リンカーの設定を埋める必要がある。
- iostreamのwcoutでもコンソールに投げ込めるが、せっかくなのでPlatform::Datail::Consoleを使ったほうがC++/CXらしい。
- system("pause")を使っているが、ここも書き換えられるだろうか。