VisualStudio2013でC++コンソールアプリを作ってリンクしようとすると

VisualStudio
error LNK2019: 未解決の外部シンボル _WinMain@16 が関数 ___tmainCRTStartup で参照されました。

が表示された。

プロジェクト設定を編集して、いろいろ設定を変えたのでおかしくなってしまったようだ。

そもそもC++のWindowアプリと、コンソールアプリケーションにはプロジェクト設定にどのような違いがあるのか調べてみた。

vc2013 設定

VisualStudio2013 C++ Windowアプリと、コンソールアプリ違い

プロジェクトファイルのDIFFを取って調べてみた。詳細はこちら。
VisualStudio2013 C++ Windowアプリと、コンソールアプリのプロジェクトファイル違い

プロジェクトファイルっていつの間にか.vcxproj形式に変わったのか...

・C/C++ - プリプロセッサ - プリプロセッサの定義にあたる箇所

VisualStudio
<PreprocessorDefinitions>WIN32;_DEBUG;<strong>_WINDOWS</strong>;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>WIN32;_DEBUG;<strong>_CONSOLE;_LIB;%</strong>(PreprocessorDefinitions)</PreprocessorDefinitions>

・リンカー ー システム ーサブシステム に当たる箇所


VisualStudio
<SubSystem><strong>Windows</strong></SubSystem> <SubSystem><strong>Console</strong></SubSystem>

VisualStudio2008 C++ Windowアプリと、コンソール違い

同様にVisualStudio2008でもWindowアプリとコンソールアプリのプロジェクトファイルのDIFFを調べてみた。詳細はこちら。
VisualStudio2008 C++ Windowアプリと、コンソール違い
・「C/C++ - プリプロセッサ - プリプロセッサの定義」にあたる箇所

VisualStudio
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS" PreprocessorDefinitions="WIN32;_DEBUG;_CONSOLE"

・「リンカー ー システム ーサブシステム」 に当たる箇所

VisualStudio
SubSystem="2" ← Windowアプリ SubSystem="1" ← コンソールアプリ

プリプロセッサの定義が微妙に違うなぁ。_LIBってなんだろう。

ちなみに、

error LNK2019: 未解決の外部シンボル _WinMain@16 が関数 ___tmainCRTStartup で参照されました。

は「C/C++ - プリプロセッサ - プリプロセッサの定義」、「リンカー ー システム ーサブシステム」をコンソール用に設定したら正常にリンクされた。