プロが教えるわが家の防犯対策術!

題名の通りなのですが、いまいちVC++2008の使い方がわかりません。2005対応の参考書などを用いて学習し理解は進んではいるのですが、ところどころ本の内容と微妙に一致しないところがあったりして実際にアプリケーション作成に至らず困っています。

1.まず、お聞きしたいのですが、プロジェクトの種類はWin32で、テンプレートはWin32プロジェクトでよいのでしょうか?

2.参考書に従って次のようなコードを作成しました。
#include "windows.h"

int APIENTRY WinMain(HINSTANCE hinstance,
  HINSTANCE hPrevInstance,
    LPSTR lpCmdLine,
     int nCmdshow)

{


SYSTEMTIME tm;
char s[80];
int iRet;

GetLocalTime(&tm);

if ((tm.wHour) && (tm.wHour < 12)) {
lstrcpy((LPSTR)s, (LPCSTR)"おはようございます。");
} else if (tm.wHour < 17) {
lstrcpy((LPSTR)s,(LPCSTR)"こんばんは。");
}


iRet = MessageBox(NULL,(LPCSTR)s,(LPCSTR)"MsgBox",MB_OK);
return 0;
}

しかし、次のようなエラーが発生しました。
1>MSVCRTD.lib(crtexe.obj) : error LNK2019: 未解決の外部シンボル _main が関数 ___tmainCRTStartup で参照されました。
1>C:\Users\xxxxxxxxx\Documents\Visual Studio 2008\Projects\MsgBox\Debug\MsgBox.exe : fatal error LNK1120: 外部参照 1 が未解決です。
この場合どうすればいいのでしょうか?

A 回答 (1件)

手元に英語版の2008しかないので英語表記で説明しますが、


恐らく「Win32 Console Application」を選択しましたね?
ではなく「Win32 Project」を選択してください。

>MSVCRTD.lib(crtexe.obj) : error LNK2019: 未解決の外部シンボル _main が関数 ___tmainCRTStartup で参照されました。
このエラーはエントリポイント(プログラム開始位置)mainを探しにいこうとしているがmainが無いというエラーです。
コンソールプログラムの場合はWinMainではなくmainがエントリポイントですので
このようなエラーが発生します。

win32 projectからプロジェクト名を入力して
okボタンを押していけば
WinMainを含んだコードが自動で作成されると思います。
(そのとき「Application Setting」の「Emply Project」にチェックが入っていると自動でコードは作成されません)

恐らくその参考書に載っているコードをそのままうつしても
更に他のコンパイルエラーに悩まさされるでしょう・・・。(その都度質問してください)
とりあえず下記のコードが通るように頑張ってください。

#include <windows.h>
int APIENTRY _tWinMain(HINSTANCE hinstance,
  HINSTANCE hPrevInstance,
    LPTSTR lpCmdLine,
     int nCmdshow)

{
::MessageBox( NULL , _T("hello") , _T("workd") , MB_OK );
return 0;
}
    • good
    • 0
この回答へのお礼

ご丁寧にありがとうございます。ご指摘の通りに修正するとうまくいきました。これで何とか学習のほうもはかどりそうです。また何かあったらよろしくお願いします。(*^。^*)。

お礼日時:2008/03/12 15:13

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