Visual Studio デベロッパー センター > Visual Studio フォーラム > Visual Studio 2010 ベータ > main関数(C++コンソールアプリケーション)
質問する質問する
 

回答済みmain関数(C++コンソールアプリケーション)

  • 2009年6月16日 7:59inoua ユーザーのメダルユーザーのメダルユーザーのメダルユーザーのメダルユーザーのメダル
     
    Visual Studio 2008では、
    int main()
    でコンソールアプリケーションを開始していたのですが、
    Visual Studio 2010 ベータでは、
    int wmain()
    になったのですか?
    以前と同じmain()を使うには何か設定が有るのですか?
    • 編集済みinoua 2009年6月16日 8:20訂正
    • 編集済みinoua 2009年6月16日 8:02訂正
    •  

回答

  • 2009年6月16日 14:22AzuleanMVPユーザーのメダルユーザーのメダルユーザーのメダルユーザーのメダルユーザーのメダル
     回答済み
    Visual Studio 2008では、
    int main()
    でコンソールアプリケーションを開始していたのですが、
    Visual Studio 2010 ベータでは、
    int wmain()
    になったのですか?
    以前と同じmain()を使うには何か設定が有るのですか?
    Visual Studio 2008でもコンソールアプリケーションを作成すると、 _tmain になりませんか?
    なお、_tmainは設定によってmainやwmainに置換されます。

    mainやwmainのどちらが使われるかはプロジェクトの設定の「Unicode文字セットを使う」「マルチバイト文字セットを使う」といった設定値により決まります。


    ※お断り※
    この話はVisual Studio 2008を前提としています。
    Visual Studio 2010でも同様の挙動を示すと思いますが、厳密に動作確認ができていません。
    もし、挙動が違うようであればご指摘下さると助かります。
    解決した場合は、参考になった返信に「回答としてマーク」のボタンを利用して、回答に設定しましょう(複数に設定できます)。
    • 回答としてマークinoua 2009年6月16日 16:58
    •  

すべての返信

  • 2009年6月16日 14:22AzuleanMVPユーザーのメダルユーザーのメダルユーザーのメダルユーザーのメダルユーザーのメダル
     回答済み
    Visual Studio 2008では、
    int main()
    でコンソールアプリケーションを開始していたのですが、
    Visual Studio 2010 ベータでは、
    int wmain()
    になったのですか?
    以前と同じmain()を使うには何か設定が有るのですか?
    Visual Studio 2008でもコンソールアプリケーションを作成すると、 _tmain になりませんか?
    なお、_tmainは設定によってmainやwmainに置換されます。

    mainやwmainのどちらが使われるかはプロジェクトの設定の「Unicode文字セットを使う」「マルチバイト文字セットを使う」といった設定値により決まります。


    ※お断り※
    この話はVisual Studio 2008を前提としています。
    Visual Studio 2010でも同様の挙動を示すと思いますが、厳密に動作確認ができていません。
    もし、挙動が違うようであればご指摘下さると助かります。
    解決した場合は、参考になった返信に「回答としてマーク」のボタンを利用して、回答に設定しましょう(複数に設定できます)。
    • 回答としてマークinoua 2009年6月16日 16:58
    •  
  • 2009年6月16日 17:01inoua ユーザーのメダルユーザーのメダルユーザーのメダルユーザーのメダルユーザーのメダル
     

    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加筆
    •  
  • 2009年6月17日 13:44AzuleanMVPユーザーのメダルユーザーのメダルユーザーのメダルユーザーのメダルユーザーのメダル
     
    2010の構成プロパティ/General/Project Defaults/Character Setを
    "Use Unicode Character Set"に設定した時のみ"LNK2019"エラーが出ました。
    main()の時エラー。
    wmain()の時エラーなし。
    あれ?"Use Unicode Character Set"でも特にリンクエラーが起きなかったなぁ。



    ところで、このスレッドの主旨は何でしょうか?
    VS2008と挙動が異なることに対して、抗議しているのか、要望しているのか、不具合として指摘しているのか、回避策を求めているのかと可能性は考えましたが、分かりませんでした。
    解決した場合は、参考になった返信に「回答としてマーク」のボタンを利用して、回答に設定しましょう(複数に設定できます)。
  • 2009年6月17日 14:32inoua ユーザーのメダルユーザーのメダルユーザーのメダルユーザーのメダルユーザーのメダル
     

    スレッドの主旨はVS2010でmain関数を使ったらリンクエラーが出たので、(VS2008では出なかったので)
    どのようにすればmain()と書いてもエラーが出なくなるのかお尋ねしました。
    「教えて下さい」というお願い(質問)です。


    今までwmain()は使ったことが有りませんでしたし、文字セットを変えたことも有りませんでしたので
    サンプルプログラムを進めることができませんでした。

    そして教えて頂いた事を元に設定を試した結果を返信しました。
    それでmain(),wmain(),文字セットの事が解り疑問が解決しました。

    「でもリンクエラーが起きなかった」という事なので私の設定がまだ間違っている所が有りそうですね。
    前に進む事が出来たので設定の間違いを探しながらVS2010の試験を進めたいと思います。

    重ねて書きますが、「文字セットの設定を変えればよい」という助言で疑問が解決しました。
    ありがとうございました。またよろしくお願いします。
    分かりにくい文章でごめんなさい。