[1.]概要
[1-1.]作業目的
「Microsoft Visual Studio」(以下VisualStudio)の「Visual C++ Community」を利用して、Windowsのメッセージボックスを表示するアプリケーションを作成する。
利用する言語はC++として、「新しいプロジェクトの作成」のウィザードの「空プロジェクト」を選択して、プロジェクトを作成する手順とする。
[1-2.]環境・前提条件
本件手順では、以下Windows環境にMicrosoft Visual Studioがインストールされている前提とする。
- エディション:Microsoft Windows 10 Pro
- システムの種類:64 ビット オペレーティング システム、x64 ベース プロセッサ
- バージョン:21H2
- OSビルド 19044.2006
- エクスペリエンス:Windows Feature Experience Pack 120.2212.4180.0
- Microsoft Visual Studio:Microsoft Visual Studio Community 2022 (64 ビット) CurrentVersion 17.3.5
[1-3.]参考ページ
- Visual C++ Win32アプリケーション作成 / インコのWindowsSDK
- VC++ Windows Programming
- VC++ Windows Programming - Section5.1 ファイル入出力
- ゼロからはじめるWindows API - WinMain 関数 すべての始まり編
- 【DXライブラリ】LNK2019未解決の外部シンボルが出た時の対処法
- DXライブラリによるゲーム作成 - Qiita
[2.]空プロジェクトの作成
[手順1.]「Visual Studio Community 2022」を起動して、起動メニューで「新しいプロジェクトの作成」を選択する。
[手順2.]次の画面で「空のプロジェクト」を選択して、「次へ」を押す。
[手順3.]「空のプロジェクト」のプロパティを入力する。最後に「作成」を押す。
- プロジェクト名:Project1
- 場所:<任意の場所を指定>
- ソリューション名:Project1
- 「ソリューションとプロジェクトを同じフォルダに配置する」にチェックは入れない
[手順4.]空プロジェクトが作成されるので、「ファイル」→「終了」を選択してプロジェクトを終了する。
[3.]プロジェクトのプロパティ変更
[3-1.]デバッグモードの設定
[手順1.]フォルダ「<プロジェクトを配置したフォルダ>\Project1」に格納されている「Project1.vcxproj」を選択して実行する。
[手順2.]上段の「構成」の値を「Debug」に変更する。
手順3.上段で「プラットフォーム」の値を「x86」に変更する。
[3-2.]WindowsAPIライブラリの設定
[手順1.]ソリューションエクスプローラーを「Project1」を選択する。
[手順2.]「プロジェクト」→「プロパティ」を選択する。
[手順3.]構成を「すべての構成」、プラットフォームを「すべてのプラットフォーム」を選択する。
[手順4.]「構成プロパティ」→「リンカー」→「システム」→「サブシステム」を選択する。
[手順5.]「サブシステム」を「コンソール (/SUBSYSTEM:CONSOLE)」から「Windows(/SUBSYTEM:WINDOWS)」に変更して、「適用」を押す。
[注意事項]
「サブシステム」で「Windows(/SUBSYTEM:WINDOWS)」が選択されていない場合は、ビルド実行した際に「未解決の外部シンボル」のエラーが出力しビルドに失敗する。
(ビルドに失敗した場合のメッセージ)
ビルドを開始しました...
1>------ ビルド開始: プロジェクト: Project1, 構成: Debug Win32 ------
1>project1.cpp
1>MSVCRTD.lib(exe_main.obj) : error LNK2019: 未解決の外部シンボル _main が関数 "int __cdecl invoke_main(void)" (?invoke_main@@YAHXZ) で参照されました
1><プロジェクトを配置したフォルダ>\Project1\Debug\Project1.exe : fatal error LNK1120: 1 件の未解決の外部参照
1>プロジェクト "Project1.vcxproj" のビルドが終了しました -- 失敗。
========== ビルド: 成功 0、失敗 1、最新の状態 0、スキップ 0 ==========
[3-3.]マルチバイト文字セットの設定
[手順1.]「構成プロパティ」→「詳細」→「文字セット」を選択する。
[手順2.]「文字セット」を「マルチバイト文字セットを使用する」に変更して、「適用」を押す。
[注意事項]
「文字セット」で「マルチバイト文字セット」が指定されていない場合は、ソース内に全角文字を使用してビルド実行した際に「文字型の不一致」のエラーが出力しビルドに失敗する。
(ビルドに失敗した場合のメッセージ)
ビルドを開始しました...
1>------ ビルド開始: プロジェクト: Project1, 構成: Debug Win32 ------
1>project1.cpp
1><プロジェクトを配置したフォルダ>\Project1\Project1\project1.cpp(9,56): error C2664: 'int MessageBoxW(HWND,LPCWSTR,LPCWSTR,UINT)': 引数 2 を 'const char [9]' から 'LPCWSTR' へ変換できません。
1><プロジェクトを配置したフォルダ>\Project1\Project1\project1.cpp(9,19): message : 指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたはかっこで囲まれた関数スタイル キャストが必要です。
1>C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\um\winuser.h(9161,1): message : 'MessageBoxW' の宣言を確認してください
1>プロジェクト "Project1.vcxproj" のビルドが終了しました -- 失敗。
========== ビルド: 成功 0、失敗 1、最新の状態 0、スキップ 0 ==========
[4.]プロジェクトにソースファイルを追加する
[4-1.]cppファイルの追加
[手順1.]「Project1」→「ソースファイル」を右クリックする。
[手順2.]「追加」→「新しい項目」を選択する
[手順3.]「C++ファイル(.cpp)」を選択する。ファイル名はプロジェクト名と同一とする。
名前:project1.cpp
[手順4.]以下ファイルが追加されたことを確認する。
[手順5.]ファイル」→「終了」を選択して一旦プロジェクトを終了する。確認画面で「上書き保存」を押す。
[4-2.]ソースファイルの書き込み
「project1.cpp」ファイルに以下ソースを追記する。
(追記するソースコード)
#include <windows.h>
// プロトタイプ宣言
int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int);
// Windows Main 関数
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow){
MessageBox(NULL, "処理終了", "処理終了", MB_OK);
return 0;
}
[5.]ビルドの実行
[手順1.]「ビルド」→「Project1のビルド」を選択する。
[手順2.]以下のメッセージが表示されて、ビルドが正常終了したことを確認する。
(ビルドが正常終了したメッセージ)
ビルドを開始しました...
1>------ ビルド開始: プロジェクト: Project1, 構成: Debug Win32 ------
1>project1.cpp
1>Project1.vcxproj -><プロジェクトを配置したフォルダ>\Project1\Debug\Project1.exe
========== ビルド: 1 正常終了、0 失敗、0 更新不要、0 スキップ ==========
[6.]ビルド処理
[手順1.]フォルダ「<プロジェクトを配置したフォルダ>\Project1\Debug」に作成された「Project1.exe」を選択して実行する。
[手順2.]「処理終了」のメッセージが表示されたら、「OK」のボタンを押してアプリケーションを終了する。
以上