• ベストアンサー

コンパイルエラーが理解できません

初心者ですお教えください。 下記ソースをMicrosoft eMbedded Visual C++ でコンパイルしましたがコンパイルエラーが出て 理解できませんどなたかお教えください。 STANDARDSDK Win32 (WCE x86)Debug STANDARDSDK Emulator -------------------------------------------------- #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 >= 0) && (tm.wHour < 12)) { lstrcpy(s, "おはです。"); } else if (tm.wHour < 17) { lstrcpy(s, "こんちは。"); } else { lstrcpy(s, "こんば。"); } // メッセージボックスに文字列を表示します。 iRet = MessageBox(NULL, s, "MsgBox", MB_OK); // 正常終了を意味する戻り値を返します。 return 0; } <コンパイルエラー内容です> プロジェクト 'MsgMain - Win32 (WCE x86) Debug' 用の中間ファイルおよび出力ファイルを削除しています。 --------------------構成 : MsgMain - Win32 (WCE x86) Debug-------------------- コンパイル中... MsgMain.cpp C:\Documents and Settings\中野\デスクトップ\MsgMain.cpp(7) : error C2731: 'WinMain' : function cannot be overloaded C:\Documents and Settings\中野\デスクトップ\MsgMain.cpp(3) : see declaration of 'WinMain' C:\Documents and Settings\中野\デスクトップ\MsgMain.cpp(17) : error C2664: 'wcscpy' : cannot convert parameter 1 from 'char [80]' to 'unsigned short *' Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast C:\Documents and Settings\中野\デスクトップ\MsgMain.cpp(19) : error C2664: 'wcscpy' : cannot convert parameter 1 from 'char [80]' to 'unsigned short *' Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast C:\Documents and Settings\中野\デスクトップ\MsgMain.cpp(21) : error C2664: 'wcscpy' : cannot convert parameter 1 from 'char [80]' to 'unsigned short *' Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast C:\Documents and Settings\中野\デスクトップ\MsgMain.cpp(25) : error C2664: 'MessageBoxW' : cannot convert parameter 2 from 'char [80]' to 'const unsigned short *' Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast cl.exe の実行エラー MsgMain.exe - エラー 5、警告 0 以上です宜しくお願いします。

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

  • ベストアンサー
  • php504
  • ベストアンサー率42% (926/2160)
回答No.4

文字列を扱う部分の変数の型をcharからTCHAR、LPSTRからLPTSTRにします WinMain( )関数の3番目の引数を LPSTR lpCmdLine, から LPTSTR lpCmdLine, に変更 char s[80]; を TCHAR s[80]; に変更 "~"文字列 を TEXT("~") に変更したらどうでしょう

takaboodes
質問者

お礼

ご回答誠に有難うございました。 助かりました。

takaboodes
質問者

補足

アドバイスにてプログラム修正致しましたら エラーが無くなりました。iRet = MessageBox(NULL, s, TEXT("MsgBox"), MB_OK);にもTEXTを追加いたしました。 ビルドして 「リンク中... MsgMain2.exe - エラー 0、警告 0 ファイルをダウンロードしています ファイル c:\documents and settings\管理\...\emulatordbg\msgmain2.exe をダウンロードしています。 ダウンロードを終了しました。」 エミュレターの画面がでてくるのですが。 実行させたいのですがどの様にすればよいのでしょうか? 重ね重ねお教え下さい。 宜しくお願い致します。

その他の回答 (3)

回答No.3

> 対処方法はどの様にすれば宜しいのでしょうか UNICODEによるコードに書き換えることになります。

回答No.2

UNICODEモードでMBCSなコードをコンパイルしてますね。

takaboodes
質問者

補足

ご回答大変有難うございます。 対処方法はどの様にすれば宜しいのでしょうか ご教授お願いしたく思います。 宜しくお願い申し上げます。

  • SAYKA
  • ベストアンサー率34% (944/2776)
回答No.1

>error C2731: 'WinMain' : function cannot be overloaded オーバーロードできないと言っているけれど そもそもwinmainの書き方が誤っている疑惑 http://www.google.com/search?q=WinMain&hl=ja&lr= >error C2664: 'wcscpy' : cannot convert parameter 1 http://www.excite.co.jp/world/english/ →パラメタ1を変換できません。 つまり型が違うって話じゃない? 後のエラーも似たような事言ってるね。 え?なんでちゃんと教えないのかって?だってそういう約束だから・・・ヒントしか教えられない

takaboodes
質問者

お礼

ご回答誠に有難うございました。 投稿も初めてなので大変申し訳なく思います。 いろいろ分からない事ばかりなので今後とも宜しくお願い致します。 大変有難うございました。

関連するQ&A

  • VC++でコンパイルエラーが出ますがお教えください。

    初心者で申し訳なくおもいます。 下記のソースでコンパイルエラーが出ます。 // CnstDst.cpp : アプリケーション用のエントリ ポイントの定義 // #include "stdafx.h" //CnstDst クラス定義 class CnstDst { char sDat[80]; public: CnstDst(char *s); ~CnstDst(); }; CnstDst cd1("テストです"); int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) { // TODO: この位置にコードを記述してください。 MessageBox(NULL, "WinMainの入口", "WinMain", MB_OK); CnstDst cd2("テスト1"); MessageBox(NULL, "テスト2", "WinMain", MB_OK); return 0; } CnstDst::CnstDst(char *s) { lstrcpy(sDat, s); MessageBox(NULL, sDat, "コンストラクタ", MB_OK); } CnstDst::~CnstDst() { MessageBox(NULL, sDat, "デストラクタ", MB_OK); } コンパパイルエラーは下記です。 プロジェクト 'CnstDst - Win32 (WCE MIPSII_FP) Debug' 用の中間ファイルおよび出力ファイルを削除しています。 --------------------構成 : CnstDst - Win32 (WCE MIPSII_FP) Debug-------------------- リソースをコンパイル中... コンパイル中... StdAfx.cpp コンパイル中... CnstDst.cpp C:\Documents and Settings\中野\デスクトップ\テストフォルダ\CnstDst\CnstDst.cpp(22) : error C2664: 'MessageBoxW' : cannot convert parameter 2 from 'char [14]' to 'const unsigned short *' Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast C:\Documents and Settings\中野\デスクトップ\テストフォルダ\CnstDst\CnstDst.cpp(24) : error C2664: 'MessageBoxW' : cannot convert parameter 2 from 'char [9]' to 'const unsigned short *' Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast C:\Documents and Settings\中野\デスクトップ\テストフォルダ\CnstDst\CnstDst.cpp(31) : error C2664: 'wcscpy' : cannot convert parameter 1 from 'char [80]' to 'unsigned short *' Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast C:\Documents and Settings\中野\デスクトップ\テストフォルダ\CnstDst\CnstDst.cpp(32) : error C2664: 'MessageBoxW' : cannot convert parameter 2 from 'char [80]' to 'const unsigned short *' Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast C:\Documents and Settings\中野\デスクトップ\テストフォルダ\CnstDst\CnstDst.cpp(36) : error C2664: 'MessageBoxW' : cannot convert parameter 2 from 'char [80]' to 'const unsigned short *' Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast clmips.exe の実行エラー CnstDst.exe - エラー 5、警告 0 Microsoft eMbedded Visuai C++ Win32 WCE で行っております。

  • VC++でコンパイルエラーが出ますがお教えください。

    初心者です。ご教授お願いします。 環境パソコンXP Maicrosoft eMbedded Visual C++ ソースが長すぎる為この欄に入りきれませんので エラー情報にて推測できないでしょうか? エラー内容 Polymo - Win32 (WCE emulator) Debug' 用の中間ファイルおよび出力ファイルを削除しています。 --------------------構成 : Polymo - Win32 (WCE emulator) Debug-------------------- コンパイル中... Polymo.cpp C:\Documents and Settings\中野\デスクトップ\Polymo\Polymo.cpp(81) : error C2731: 'WinMain' : function cannot be overloaded C:\Documents and Settings\中野\デスクトップ\Polymo\Polymo.cpp(77) : see declaration of 'WinMain' C:\Documents and Settings\中野\デスクトップ\Polymo\Polymo.cpp(129) : error C2065: 'WNDCLASSEX' : undeclared identifier C:\Documents and Settings\中野\デスクトップ\Polymo\Polymo.cpp(129) : error C2146: syntax error : missing ';' before identifier 'wcex' C:\Documents and Settings\中野\デスクトップ\Polymo\Polymo.cpp(129) : error C2065: 'wcex' : undeclared identifier C:\Documents and Settings\中野\デスクトップ\Polymo\Polymo.cpp(131) : error C2228: left of '.cbSize' must have class/struct/union type C:\Documents and Settings\中野\デスクトップ\Polymo\Polymo.cpp(133) : error C2228: left of '.style' must have class/struct/union type C:\Documents and Settings\中野\デスクトップ\Polymo\Polymo.cpp(134) : error C2228: left of '.lpfnWndProc' must have class/struct/union type C:\Documents and Settings\中野\デスクトップ\Polymo\Polymo.cpp(135) : error C2228: left of '.cbClsExtra' must have class/struct/union type C:\Documents and Settings\中野\デスクトップ\Polymo\Polymo.cpp(136) : error C2228: left of '.cbWndExtra' must have class/struct/union type C:\Documents and Settings\中野\デスクトップ\Polymo\Polymo.cpp(137) : error C2228: left of '.hInstance' must have class/struct/union type C:\Documents and Settings\中野\デスクトップ\Polymo\Polymo.cpp(138) : error C2228: left of '.hIcon' must have class/struct/union type C:\Documents and Settings\中野\デスクトップ\Polymo\Polymo.cpp(139) : error C2228: left of '.hCursor' must have class/struct/union type C:\Documents and Settings\中野\デスクトップ\Polymo\Polymo.cpp(140) : error C2228: left of '.hbrBackground' must have class/struct/union type C:\Documents and Settings\中野\デスクトップ\Polymo\Polymo.cpp(141) : error C2228: left of '.lpszMenuName' must have class/struct/union type C:\Documents and Settings\中野\デスクトップ\Polymo\Polymo.cpp(142) : error C2228: left of '.lpszClassName' must have class/struct/union type C:\Documents and Settings\中野\デスクトップ\Polymo\Polymo.cpp(143) : error C2228: left of '.hIconSm' must have class/struct/union type C:\Documents and Settings\中野\デスクトップ\Polymo\Polymo.cpp(143) : error C2228: left of '.hInstance' must have class/struct/union type C:\Documents and Settings\中野\デスクトップ\Polymo\Polymo.cpp(145) : error C2065: 'RegisterClassEx' : undeclared identifier C:\Documents and Settings\中野\デスクトップ\Polymo\Polymo.cpp(165) : error C2065: 'WS_OVERLAPPEDWINDOW' : undeclared identifier C:\Documents and Settings\中野\デスクトップ\Polymo\Polymo.cpp(251) : error C2664: 'strlen' : cannot convert parameter 1 from 'unsigned short [100]' to 'const char *' Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast cl.exe の実行エラー Polymo.exe - エラー 20、警告 0 すいませんアドバイスお願い致します。

  • コンパイルエラー

    int m_nTypeCounter=0; と定義した変数を使い if((pDoc->m_sRomaji).GetAt(&m_nTypeCounter)==m_sStr) { m_sAnser += m_sStr; m_nTypeCounter++; } とした際、コンパイルエラーが 『C:\project\2008年課題\コピー ~ 問題・時計領域のみ再描画tokeidouga\ProgramView.cpp(536) : error C2664: 'GetAt' : 1 番目の引数を 'int *' から 'int' に変換できません。 (新しい機能 ; ヘルプを参照)』 この変換には reinterpret_cast, C スタイル キャストまたは関数スタイルのキャストが必要です。』 と表示されます。 どうしたら良いのでしょうか。 よろしくお願いします。

  • 構造体をポインターに入れたい

    構造体をポインターに入れたいのですがうまくいきません どうしたら入れることができますか? ―――ソース――― struct str{  char *name; }; static struct str state_ab[60][4] = {   { { { "いちご" } } , { { "みかん" } } ,{ { "レモン" } } , { { "ブドウ" } } },   { { { "" } } , { { "" } } ,{ { "" } } , { { "" } } }, }; static struct str state_ab2[60][8] = {   { { { "きゅうり" } } , { { "セロリ" } } ,{ { "じゃがいも" } } , { { "にんじん" } } , { { "たまねぎ" } } , { { "ニンニク" } } ,{ { "レタス" } } , { { "キャベツ" } } },   { { { "" } } , { { "" } } ,{ { "" } } , { { "" } } , { { "" } } , { { "" } } ,{ { "" } } , { { "" } } }, }; static struct str state_ab3[60][4] = {   { { { "牛肉" } } , { { "豚肉" } } ,{ { "鶏肉" } } , { { "魚肉" } } },   { { { "" } } , { { "" } } ,{ { "" } } , { { "" } } }, }; char *state_ab_f_read( int mode , int num1 , int num2 ){   struct str *p;   switch( mode ){     case 0: p = state_ab; break;     case 1: p = state_ab2; break;     case 2: p = state_ab3; break;   }   return p[ num1 ][ num2 ].name; } ―――エラー内容――― c:\documents and settings\user\my documents\visual studio 2008\projects\kami\state_ab_fd.cpp(237) : error C2440: '=' : 'str [60][4]' から 'str *' に変換できません。 指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。 c:\documents and settings\user\my documents\visual studio 2008\projects\kami\state_ab_fd.cpp(238) : error C2440: '=' : 'str [60][8]' から 'str *' に変換できません。 指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。 c:\documents and settings\user\my documents\visual studio 2008\projects\kami\state_ab_fd.cpp(239) : error C2440: '=' : 'str [60][4]' から 'str *' に変換できません。 指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。 c:\documents and settings\user\my documents\visual studio 2008\projects\kami\state_ab_fd.cpp(241) : error C2676: 二項演算子 '[' : 'str' は、この演算子または定義済の演算子に適切な型への変換の定義を行いません。(新しい動作; ヘルプを参照) c:\documents and settings\user\my documents\visual studio 2008\projects\kami\state_ab_fd.cpp(241) : error C2228: '.name' の左側はクラス、構造体、共用体でなければなりません ビルドログは "file://c:\Documents and Settings\USER\My Documents\Visual Studio 2008\Projects\kami\Debug\BuildLog.htm" に保存されました。

  • 意味がわからないエラーがあります【14歳からはじめるC言語ゲームプログラミング】

    14歳からはじめるC言語ゲームプログラミング(横スクロールアクションゲーム)をやっていて、第5章で意味がわからないエラーがでました・・・ error C2664: 'MessageBoxW' : 2 番目の引数を 'const char [25]' から 'LPCWSTR' に変換できません。 1> 指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。 というもので、chap4.cppの23行目と67行目でひっかかりました。 どうすれば解決できますでしょうか。 C言語に詳しい方、よろしくおねがいします。

  • SDKでのエラーなのですが。

    はじめまして。 SDKの勉強で猫でもわかる~のHPの第37章のサンプルを実行したのですが、 --------------------構成: 037 - Win32 Debug-------------------- コンパイル中... main.cpp D:\SDK\037\main.cpp(230) : error C2664: 'CallWindowProcA' : 1 番目の引数を 'int (__stdcall *)(void)' から 'long (__stdcall *)(struct HWND__ *,unsigned int,unsigned int,long)' に変換できません。 (新しい機能 ; ヘルプを参照) この変換には reinterpret_cast, C スタイル キャストまたは関数スタイルのキャストが必要です。 D:\SDK\037\main.cpp(248) : error C2664: 'CallWindowProcA' : 1 番目の引数を 'int (__stdcall *)(void)' から 'long (__stdcall *)(struct HWND__ *,unsigned int,unsigned int,long)' に変換できません。 (新しい機能 ; ヘルプを参照) この変換には reinterpret_cast, C スタイル キャストまたは関数スタイルのキャストが必要です。 cl.exe の実行エラー 037.exe - エラー 2、警告 0 というようなエラーが出てしまいました。 このエラーを回避するにはどのようにすればいいのでしょうか?

  • error C2664

    現在VisualStudio C++ 6.0にてプログラムを組んでいるのですが、以下のようなエラーが出ます。 型の変換ができていないであろうことはわかるのですが、解決方法がわかりません。 どのような解決方法があるのでしょうか? よろしくお願いします。 error C2664: 'strcat' : 1 番目の引数を 'unsigned char [256]' から 'char *' に変換できません。 (新しい機能 ; ヘルプを参照) 指示された型は関連がありません; 変換には reinterpret_cast、 C スタイル キャストまたは関数スタイルのキャストが必要です。

  • 構造体自体をポインターに入れたい

    構造体自体をポインターに入れて、ポーンターから位置をずらして表示したいものを表示したいのですが、どのようにすればよろしいでしょうか? 現在下記のように書いていますがコンパイルエラーになります static struct{  char *name; //名前  int num; //数 }eat1[5] = {  { "もも" , 1 },  { "みかん" , 2 }, }; static struct{  char *name; //名前  int num; //数 }eat2[5] = {  { "きゅうり" , 1 },  { "ナス" , 2 }, };  int *p;  int mode = 2;  int i;  switch( mode ){   case 1: p = &eat1;   case 2: p = &eat2;  }  for( i = 0; i < 5; i++; ){   printf( "%d\n" , p[i].num );  } エラー内容 c:\documents and settings\user\my documents\visual studio 2008\projects\kami\bese_item_cd.cpp(303) : error C2440: '=' : '<unnamed-type-eat1> (*)[5]' から 'int *' に変換できません。 指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。 c:\documents and settings\user\my documents\visual studio 2008\projects\kami\bese_item_cd.cpp(304) : error C2440: '=' : '<unnamed-type-eat2> (*)[5]' から 'int *' に変換できません。 指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。 c:\documents and settings\user\my documents\visual studio 2008\projects\kami\bese_item_cd.cpp(307) : error C2059: 構文エラー : ';' c:\documents and settings\user\my documents\visual studio 2008\projects\kami\bese_item_cd.cpp(308) : error C2228: '.num' の左側はクラス、構造体、共用体でなければなりません 型は 'int' です。

  • Visual C++のサンプルプログラムを入力時

    Visual C++のサンプルプログラム(CD付属ソースから)を入力・コンパイル時のエラー すみません、教えてgoo初心者なもので、返信感覚で回答者にお礼を書いていたら再質問の順序等訳がわからなくなってしまったので新規に質問します。 前回質問:http://okwave.jp/qa/q6315455.html 猫でもわかるゲームプログラミングhttp://www.kumei.ne.jp/c_lang/index.htmlという本で勉強しようとしています。 本の巻末に書いてある通り、プロジェクトを新規作成でWindowsアプリケーション、空のプロジェクトで始め、サンプルのソースをコピー&ペーストで貼り付けたんですが、 1>new1.cpp 1>c:\documents and settings\REI\my documents\visual studio 2008\projects\new1\new1\new1.cpp(58) : error C2440: '=' : 'LPCSTR' から 'LPCWSTR' に変換できません。 1> 指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。 1>c:\documents and settings\REI\my documents\visual studio 2008\projects\new1\new1\new1.cpp(85) : error C2664: 'CreateWindowExW' : 2 番目の引数を 'char [6]' から 'LPCWSTR' に変換できません。(新しい機能 ; ヘルプを参照) 1> 指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。 1>ビルドログは "file://c:\Documents and Settings\REI\My Documents\Visual Studio 2008\Projects\new1\new1\Debug\BuildLog.htm" に保存されました。 1>new1 - エラー 2、警告 0 となります。すみません、ソースは文字数の関係でUPできないのですが、 これでは苦労してプログラム入力したとしても悉く実行できないってことですよね。 どなたか分かる方いましたらご回答ください。

  • エラー C2664

    プログラミングの初心者です. 「error C2664: 'fclose' : 1 番目の引数を 'const char [14]' から 'FILE *' に変換できません。 指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。」 以上のエラー文がでてきて, http://tipstips.client.jp/ugopen/UfuncErrorW32.html ↑の操作をしても消えませんでした. エラー文の出てきたのは fclose("sikisaizu.csv"); というところです. よければヒント等を教えていただけると嬉しく思います. よろしくお願い致します.