アプリ版:「スタンプのみでお礼する」機能のリリースについて

C言語は少しやっていたことがあり
このたび、Winapiをしてみようと
はじめました。
参考に見つけてきたプログラム

#include <windows.h>
#include <tchar.h>

int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrevInst, LPSTR pCmdLine, int showCmd)
{
MessageBox( NULL, _T("Hello World"), _T("メッセージ"), MB_OK );
return 0;
}

をコンパイルしようとしたところ
error LNK2019:未解決のシンボル __imp__MessageBoxA@16が関数_WinMain@16で 参照されました。
fatal errorLNK1120:外部1が未解決です。

と出てきます。
どうすればいいのでしょうか・・・
困っています誰か助けてください

Windows XP SP3
Visual Studio C++ 2008 Express Edition

A 回答 (3件)

スタートメニューから「Visual Studio 2008 コマンド プロンプト」のようにもので起動しているんですよね?


# 2008 Express Editionは自宅のに入れていないので…

>Includeフォルダに、Windows.hが存在していないのですが・・・

起動したコマンドプロンプトで、SETコマンドを実行すると、
設定されている環境変数が表示されます。
INCLUDE環境変数でWINDOWS.Hのある場所が指定されているでしょう。
さていないとリンカエラーではなくコンパイルエラーです。

>cl test.c でコンパイルしました。

User32.libがリンクされていません。
cl test.c user32.lib として下さい。
ちなみに、環境変数LIBで記述されている先にuser32.libがあるハズです。

# この程度なら問題ないでしょうけど…プロジェクトを作成した方が後々扱いやすくなるかと思います。
# なお、1つのプロジェクトに同じ名前の関数は複数おけませんのでご注意を。
# http://oshiete1.goo.ne.jp/qa5126302.html
# http://oshiete1.goo.ne.jp/qa5075853.html
# http://oshiete1.goo.ne.jp/qa5061830.html など…
    • good
    • 1
この回答へのお礼

user32.libをつけるとコンパイルできました!!
どうもありがとうございます。
ほかにもいろいろ教えていただき感謝しています。

お礼日時:2009/07/22 07:43

windows.hは私の環境では


C:\Program Files\Microsoft SDKs\Windows\v6.0A\Include
にありました
Visual C++では
$(WindowsSdkDir)\include
としてインクルードディレクトリの1つに登録してあるはずです
    • good
    • 0

>をコンパイルしようとしたところ


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

どのようにコンパイルしました?
コマンドラインから…でしょうか?

http://msdn.microsoft.com/ja-jp/library/cc410914 …
>インポートライブラリ:User32.lib を使用
ということで、User32.libもリンクしないといけませんが指定していますか?

この回答への補足

cl test.c でコンパイルしました。

どうも
Includeフォルダに、Windows.hが存在していないのですが・・・

補足日時:2009/07/22 00:36
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!