main関数(C++コンソールアプリケーション)
- Visual Studio 2008では、
int main()
でコンソールアプリケーションを開始していたのですが、
Visual Studio 2010 ベータでは、
int wmain()
になったのですか?
以前と同じmain()を使うには何か設定が有るのですか?
回答
Visual Studio 2008では、
Visual Studio 2008でもコンソールアプリケーションを作成すると、 _tmain になりませんか?
int main()
でコンソールアプリケーションを開始していたのですが、
Visual Studio 2010 ベータでは、
int wmain()
になったのですか?
以前と同じmain()を使うには何か設定が有るのですか?
なお、_tmainは設定によってmainやwmainに置換されます。
mainやwmainのどちらが使われるかはプロジェクトの設定の「Unicode文字セットを使う」「マルチバイト文字セットを使う」といった設定値により決まります。
※お断り※
この話はVisual Studio 2008を前提としています。
Visual Studio 2010でも同様の挙動を示すと思いますが、厳密に動作確認ができていません。
もし、挙動が違うようであればご指摘下さると助かります。
解決した場合は、参考になった返信に「回答としてマーク」のボタンを利用して、回答に設定しましょう(複数に設定できます)。- 回答としてマークinoua 2009年6月16日 16:58
すべての返信
Visual Studio 2008では、
Visual Studio 2008でもコンソールアプリケーションを作成すると、 _tmain になりませんか?
int main()
でコンソールアプリケーションを開始していたのですが、
Visual Studio 2010 ベータでは、
int wmain()
になったのですか?
以前と同じmain()を使うには何か設定が有るのですか?
なお、_tmainは設定によってmainやwmainに置換されます。
mainやwmainのどちらが使われるかはプロジェクトの設定の「Unicode文字セットを使う」「マルチバイト文字セットを使う」といった設定値により決まります。
※お断り※
この話はVisual Studio 2008を前提としています。
Visual Studio 2010でも同様の挙動を示すと思いますが、厳密に動作確認ができていません。
もし、挙動が違うようであればご指摘下さると助かります。
解決した場合は、参考になった返信に「回答としてマーク」のボタンを利用して、回答に設定しましょう(複数に設定できます)。- 回答としてマークinoua 2009年6月16日 16:58
Azuleanさん有難うございます。
OS環境:Win 7 RC版
Visual Studio 2008 professional (以後2008と言う)
Visual Studio 2010 ベータ (以後2010と言う)結論:
2010の構成プロパティ/General/Project Defaults/Character Setを
"Use Unicode Character Set"に設定した時のみ"LNK2019"エラーが出ました。
main()の時エラー。
wmain()の時エラーなし。2010で/Character Set/を"Use Unicode Character Set"以外に設定した場合は、
main()でもwmain()でも可でした。2008では、文字セットをどれに変えても、main()とwmain()のどれにしてもエラーは出ませんでした。
- 編集済みinoua 2009年6月16日 17:11加筆
2010の構成プロパティ/General/Project Defaults/Character Setを
あれ?"Use Unicode Character Set"でも特にリンクエラーが起きなかったなぁ。
"Use Unicode Character Set"に設定した時のみ"LNK2019"エラーが出ました。
main()の時エラー。
wmain()の時エラーなし。
ところで、このスレッドの主旨は何でしょうか?
VS2008と挙動が異なることに対して、抗議しているのか、要望しているのか、不具合として指摘しているのか、回避策を求めているのかと可能性は考えましたが、分かりませんでした。
解決した場合は、参考になった返信に「回答としてマーク」のボタンを利用して、回答に設定しましょう(複数に設定できます)。スレッドの主旨はVS2010でmain関数を使ったらリンクエラーが出たので、(VS2008では出なかったので)
どのようにすればmain()と書いてもエラーが出なくなるのかお尋ねしました。
「教えて下さい」というお願い(質問)です。
今までwmain()は使ったことが有りませんでしたし、文字セットを変えたことも有りませんでしたので
サンプルプログラムを進めることができませんでした。そして教えて頂いた事を元に設定を試した結果を返信しました。
それでmain(),wmain(),文字セットの事が解り疑問が解決しました。「でもリンクエラーが起きなかった」という事なので私の設定がまだ間違っている所が有りそうですね。
前に進む事が出来たので設定の間違いを探しながらVS2010の試験を進めたいと思います。重ねて書きますが、「文字セットの設定を変えればよい」という助言で疑問が解決しました。
ありがとうございました。またよろしくお願いします。
分かりにくい文章でごめんなさい。


