Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
  • 締切済み

付属プログラムを引用してもエラーが起きて困っています。

参考書に書かれてあるプログラムを書き写して練習してますが、 ビルドしたところ、参考書と同じなのにビルドエラーが起きます。 ちなみに、今参考にしているのは、 猫でも分かるゲームプログラミングです。 試しにその付属CDのプログラムを 外部ファイルの画像を描画するプログラムのcppごと まるまる移してもなぜかビルドエラーになります。 開発環境はVisual C++です。 開発環境が違えば製品についてくるプログラムでもエラーが 起きるのでしょうか? あと、猫でも分かるゲームプログラミングの他にC言語逆引き大全を持ってます。

みんなの回答

回答No.2

>ビルドしたところ、参考書と同じなのにビルドエラーが起きます。 以下のどれかに該当する場合、ビルド出来る保障はありません。 ・筆者のコンパイラと読者のコンパイラが違う物である場合 ・筆者のコンパイラと読者のコンパイラが同じでもバージョンが違う場合 ・筆者のコンパイラと読者のコンパイラが同じでも動作設定が違う場合 ・筆者のライブラリと読者のライブラリが違う物である場合 ・筆者のライブラリと読者のライブラリが同じでもバージョンが違う場合 ・筆者のインクルードファイルと読者のインクルードファイルが違う物である場合 ビルドの成功が保障されるのは「筆者と読者のコンパイラ環境が100%同一である場合」に限ります。 なので「cppファイルごとコピー」しただけではダメです。 そのcppファイルが参照するヘッダーファイル、そのcppソースが利用するライブラリファイルの設定、そのcppファイルをコンパイルするコンパイラの設定、そのcppファイルをコンパイルするコンパイラ自身を、筆者の環境と同じにしなければいけません。 場合によっては「コンパイラやビルド環境を完全に一致させてもエラーが出る事」があります。 なぜなら「コンパイラ自身の動作環境が筆者と読者で異なる」からです。まったく同じパソコンを用意して、まったく同じソフトを入れ、100%同じ環境を作るのは不可能ですからね。

proxi
質問者

お礼

そうでしたか、 通りで、サーチエンジンで見つけた物や書き移したプログラムでは、 どうしても動かないわけですね。 本についているソフトをインストールして試してみます。

すると、全ての回答が全文表示されます。
  • asuncion
  • ベストアンサー率33% (2127/6291)
回答No.1

>参考書と同じなのにビルドエラーが起きます。 ビルド時に起きるエラーは1種類ではありません。 よって、あなたのところでは「何という」ビルドエラーが出ているかを 「具体的に」示す必要があります。

proxi
質問者

補足

何のエラーなのか、分からないので、 エラーが起きた時の画面をアップロードし、 プログラムをここに書いておきます。 #include <windows.h> LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); ATOM InitApp(HINSTANCE); BOOL InitInstance(HINSTANCE, int); char szClassName[] = "bitmap"; HINSTANCE hInst; int WINAPI WinMain(HINSTANCE hCurInst, HINSTANCE hPrevInst, LPSTR lpsCmdLime, int nCmdSnow) { MSG msg; BOOL bRet; hInst = hCurInst; if (!InitApp(hCurlnst)) return FALSE; if(!InitInstance(hCurInst,nCmdSnow)) return FLASE; while((bRet = GetMessage(&msg,NULL,0,0))!=0){ if(bRet = -1){ break; } else { TranslateMessage(&msg); DispatchMessage(&msg); } } return(int)msg.wParam; } //ウィンドウクラスの登録 ATOM InitApp(HINSTANCE hInst) { WNDCLASSEX wc; wc.cbSize = sizeof(WNDCLASSEX); wc.style = CS_HREDRAW | CS_VREDRAW; wc.lpfnWndProc = WndProc; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hInstance = hInst; wc.hIcon = (HICON)LoadImage(NULL, "../image/bitmap.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE); wc.hCursor = (HCURSOR)LoadImage(NULL, MAKEINTRESOURCE(IDC_ARROW), IMAGE_CURSOR, 0, 0, LR_DEFAULTSIZE | LR_SHARED); wc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH); wc.lpszMenuName = NULL; //メニュー名 wc.lpszClassName = (LPCSTR)szClassName; wc.hIconSm = (HICON)LoadImage(NULL, MAKEINTRESOURCE(IDI_APPLICATION), IMAGE_ICON, 0, 0, LR_DEFAULTSIZE | LR_SHARED); return (RegisterClassEx(&wc)); } //ウィンドウの生成 BOOL InitInstance(HINSTANCE hInst, int nCmdShow) { HWND hWnd; hWnd = CreateWindow(szClassName, "猫でもわかるゲームプログラミング", //タイトルバーに表示されます WS_OVERLAPPEDWINDOW, //ウィンドウの種類 CW_USEDEFAULT, //X座標 CW_USEDEFAULT, //Y座標 CW_USEDEFAULT, //幅 CW_USEDEFAULT, //高さ NULL, //親ウィンドウのハンドル、親を作るときはNULL NULL, //メニューハンドル、クラスメニューを使うときはNULL hInst, //インスタンスハンドル NULL); if (!hWnd) return FALSE; ShowWindow(hWnd, nCmdShow); UpdateWindow(hWnd); return TRUE; } //ウィンドウプロシージャ LRESULT CALLBACK WndProc(HWND hWnd, UINT msg, WPARAM wp, LPARAM lp) { int id, i, j; static int bmpw, bmph; static HDC hdc_mem; static HBITMAP hBmp; BITMAP bmp_info; HDC hdc; PAINTSTRUCT ps; RECT rc; switch (msg) { case WM_CREATE: hBmp = (HBITMAP)LoadImage(NULL, "cat.bmp", IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE); GetObject(hBmp, (int)sizeof(bmp_info), &bmp_info); bmpw = bmp_info.bmWidth; bmph = bmp_info.bmHeight; hdc_mem = CreateCompatibleDC(NULL); SelectObject(hdc_mem, hBmp); break; case WM_PAINT: GetClientRect(hWnd, &rc); hdc = BeginPaint(hWnd, &ps); for (i = 0; i * bmpw <= rc.right; i++) { for (j = 0; j * bmph <= rc.bottom; j++) { BitBlt(hdc, i * bmpw, j * bmph, bmpw, bmph, hdc_mem, 0, 0, SRCCOPY); } } EndPaint(hWnd, &ps); break; case WM_CLOSE: id = MessageBox(hWnd, "終了してもよろしいですか", "確認", MB_YESNO | MB_ICONQUESTION); if (id == IDYES) DestroyWindow(hWnd); break; case WM_DESTROY: DeleteObject(hBmp); DeleteDC(hdc_mem); PostQuitMessage(0); break; default: return (DefWindowProc(hWnd, msg, wp, lp)); } return 0; }

すると、全ての回答が全文表示されます。

関連するQ&A