• ベストアンサー

win32アプリケーションコンパイル時のエラー

#include <windows.h> int WINAPI WinMain(HINSTANCE hinstance, HINSTANCE hprevinstance , LPSTR lpCmdLine, int cmdShow) { MessageBox(NULL,"この文字が出ます","メッセージ",MB_OK); return 0; } 上記ソースをコンパイル時に以下のエラーが出ます ------ ビルド開始: プロジェクト: kcn01, 構成: Debug Win32 ------ リンクしています... MSVCRTD.lib(crtexe.obj) : error LNK2019: 未解決の外部シンボル _main が関数 ___tmainCRTStartup で参照されました。 C:\C++練習\kcn01\Debug\kcn01.exe : fatal error LNK1120: 外部参照 1 が未解決です。 ビルドログは "file://c:\C++\kcn01\Debug\BuildLog.htm" に保存されました。 kcn01 - エラー 2、警告 0 ========== ビルド: 0 正常終了、1 失敗、0 更新、0 スキップ ========== 2005とSDKを一緒に使用するにある手順1~5は全て行いました ウィンドウズアプリケーションは普通に動作するのですが 空のプロジェクトにして↑のソースをコンパイルするとエラーが出ます 何か原因がわかる方よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • koedame
  • ベストアンサー率33% (10/30)
回答No.2

前の方のご指摘どおり、 コンソールアプリケーションの方でプロジェクトを作成してしまったようですね。 一応コンソールアプリケーションで win32 アプリケーションの スケルトンプログラムをビルドしてみた結果 コンソール練習用プロジェクト error LNK2019: 未解決の外部シンボル _main が関数 _mainCRTStartup で参照されました。 コンソール練習用プロジェクト fatal error LNK1120: 外部参照 1 が未解決です。 と出ました。 >error LNK2019: 未解決の外部シンボル _main が関数 >___tmainCRTStartup で参照されました。 の部分が同じですし、 多分間違いないでしょう。 まあ、変更の仕方は私には良く分りませんが。 もう一度作り直したほうが、考えなくていいと思います。 今度は コンソールアプリケーションではなく、 win32 アプリケーションの方にチェックをつけて やれば大丈夫だと思います。

op015
質問者

お礼

回答ありがとうございました 無事解決しました

その他の回答 (1)

noname#22510
noname#22510
回答No.1

> 未解決の外部シンボル _main このメッセージが出るということは、コンパイル・オプションが コンソール・アプリケーションを作成するようになっているのではないでしょうか。 もしそうなっていれば、Windowsアプリケーションを作成するための オプションを設定すればよいと思います。

op015
質問者

お礼

すみません 新たに質問した内容がタイトルと違う内容になってしまうし 最初に質問した内容は解決しているので締め切りました マルチバイト文字セットについては自分で調べてみます 回答ありがとうございました

op015
質問者

補足

確かにコンソールアプリケーションになっていました。 windowsアプリケーションにしてからコンパイルしたらエラーになったのですが 文字セットを無しorマルチバイト文字セットにするとそのエラーも直りました この設定はどういう意味があるんですか?