dポイントプレゼントキャンペーン実施中!

VC++2008を使用してWin32APIを使ったプログラムを動かしたいと思っている者です。
これまでC言語については多少学んできましたがC++を使用するのは初めてです。
まずはサンプルプログラムを動かそうと思い以下のソースを入力しました。
#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;
}

そしてこれをビルドしてみたところエラーメッセージがでてしまいうまくビルドできませんでした。
参考にしているHPはVC++2008での作業を推奨していたので、動作環境の違いなどではないと思うのですが…
初期設定等の問題になるのでしょうか?解決策があれば教えていただきたいです。

以下が表示されるエラーメッセージです。
1>1.obj : error LNK2028: 未解決のトークン (0A000044) "extern "C" int __stdcall MessageBoxW(struct HWND__ *,wchar_t const *,wchar_t const *,unsigned int)" (?MessageBoxW@@$$J216YGHPAUHWND__@@PB_W1I@Z) が関数 "extern "C" int __cdecl MessageBox(struct HWND__ *,wchar_t const *,wchar_t const *,unsigned int)" (?MessageBox@@$$J0YAHPAUHWND__@@PB_W1I@Z) で参照されました。
1>1.obj : error LNK2019: 未解決の外部シンボル "extern "C" int __stdcall MessageBoxW(struct HWND__ *,wchar_t const *,wchar_t const *,unsigned int)" (?MessageBoxW@@$$J216YGHPAUHWND__@@PB_W1I@Z) が関数 "extern "C" int __cdecl MessageBox(struct HWND__ *,wchar_t const *,wchar_t const *,unsigned int)" (?MessageBox@@$$J0YAHPAUHWND__@@PB_W1I@Z) で参照されました。
1>C:\Documents and Settings\Owner\My Documents\Visual Studio 2008\Projects\1\Debug\1.exe : fatal error LNK1120: 外部参照 2 が未解決です。

A 回答 (2件)

同じようなコードを組んでみても リンクエラーにはならないようです



当方は VC2008Express ですけど

int WINAPI MessageBoxW( ... );
をリンクする予定だったけれども ソースコード側がコンパイルが
int __cdecl MessageBox( ... );
でコンパイルされているの リンクできませんよ

といったエラーです

その参照しているHPまたは プロジェクトの作成手順と標準設定から変更した部分などを明記したほうがいいかもしれないですよ

本来なら
MessageBox( ... );
と記述したUNICODE文字セットの場合 WinUser.h の define の MessageBoxWが使われるはずです
    • good
    • 0
この回答へのお礼

お礼が遅くなってしまい申し訳ありませんでした。
無事ビルドでき、動作させることができました。
ありがとうございました!

お礼日時:2011/01/06 13:47

とりあえず,


最初にプロジェクトを新規作成するときに,
CLR のどれかじゃなくて,「Win32 プロジェクト」を選んでいますか?


# エラー内容は「MessageBox 関数で MessageBoxW を参照してるけど未解決」ですね。
    • good
    • 0
この回答へのお礼

CLRでプロジェクトを作成していたみたいです…
Win32プロジェクトで作成したら無事動作しました!
ありがとうございました。

お礼日時:2011/01/06 13:48

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