• ベストアンサー

DXライブラリで(初歩的な質問です。

簡単なゲームを、DXライブラリでゲームを作ろうと思ったのですが、エラーがでてしまいます。 > C:\borland\bcc55\Bin\make.exe -fDebug\trpg.mak TARGET MAKE Version 5.2 Copyright (c) 1987, 2000 Borland bcc32 -W -3 -Od -w- -AT -pc -H- -k -b -v -y -DDEBUG -nDebug -c C:\MyC\trpg\gameframe.h.cpp Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland C:\MyC\trpg\gameframe.h.cpp: エラー E2187 C:\MyC\trpg\gameframe.h.cpp 29: 1 行目で始まった条件構文の途中でファイルが終わっている *** 1 errors in Compile *** ** error 1 ** deleting Debug\gameframe.h.obj Make End !! (Elapsed time 0:07.375) 当方は、まずは、ゲームの骨組みになるものを作らないといけないみたいなので、ソレを作ろうとしています。 書籍に書いてあるものを入力しただけなのですが 「1 行目で始まった条件構文の途中でファイルが終わっている」とは、 どうすればいいのでしょうか?そのままだろ、と言われるかもしれません が、文字入力や画像表示、単純な関数を個々に使うのと違い、正直、複雑 すぎて、あまりよく解っていないので困っています。 簡単な質問だと思いますが、よろしければ、回答お願いします。 #ifndef __GAMEFRAME_H__ #define __GAMEFRAME_H__ #include "DxLib.h" //画面モードを表す列挙定数 enum GAMESTATE{ GAME_TITLE=1,GAME_MAIN,GAME_OVER,GEME_CLEAR }; class GameFrame{ virtual void drowGameTitle(){} virtual void drowGameMain(){} virtual void drowGameClear(){} virtual void drowGameOver(){} virtual void loadFiles(){} virtual void initStage(){} GAMESTATE gstate;//現在表示している画面モードを表す関数 protected: GAMESTATE setGameState(GAMESTATE state); //gstate変更関数 public: virtual ~GameFrame(){} void doMainLoop();//メインループを実行 };

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

  • ベストアンサー
  • minus273
  • ベストアンサー率75% (15/20)
回答No.2

条件構文というのはifのことです。 と言いたいところですが、今回は1行目でエラーが出ているので、 プリプロセッサの#ifndefのことかと思われます。 #ifndefには対応する#endifがないといけませんので、 最後の行の後に#endifと書き足してみてください。 あと、ファイル名が「gameframe.h.cpp」になっていますが 本には「gameframe.h」と書いてありませんか? だとしたらそのようにファイル名を変更してください。

hotaru456
質問者

お礼

素晴らしいです。 cppと#endifですか。 この2点でgameframe.hのエラーは解決しました。 ありがとうございます! 骨組みさえ終われば、少し書いて即動作テストに戻れるのでなんとかなりそうだ、と勝手に思って頑張ります。 くどいですが、最後にもう一度お礼を言わせてください。 ありがとうございました!。

その他の回答 (1)

  • LOHA
  • ベストアンサー率52% (203/388)
回答No.1

うーんなんだか凄まじいになっていますね…。 これ見る限りmain関数すら作ってないようですので、ゲームを作るには時期尚早かと思いますね。 もし質問に乗せたソースをこのままコンパイルしているようでしたらとしたら、何も理解していないということですのでC言語、C++言語を一から勉強する必要があると思います。 C言語の書籍を購入して勉強するのをお勧めいたします。

hotaru456
質問者

お礼

main関数というのは作ってあるつもりで #include"gameframe.h" int WINAPI WinMain(HINSTANCE hI, HINSTANCE hp,LPSTR lpC, int nC){ GameFrame *gf = new GameFrame(); gf->doMainLoop(); delete gf; } なんですが、文字数制限もあるし今回はとりあえず、エラーのでてるgameframe.hだけを書いたんです。 まあなにはともあれ、勉強します。またよろしくお願いします。

関連するQ&A

  • DOSでコンパイルしたらインクルードファイルがない?(開けない?)

    borland c++ コンパイラ5.5をインストールして コマンドプロンプトで実行したのですが こんなメッセージがでました。どうすればよいのでしょうか? ライブラリとかいるんでしょうか? C:\borland\bcc55\Bin>bcc32 ffff.cpp Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland ffff.cpp: エラー E2209 ffff.cpp 1: インクルードファイル 'iostream.h' をオープンできない エラー E2451 ffff.cpp 5: 未定義のシンボル cout(関数 main() ) *** 2 errors in Compile *** ちなみにソースファイルの内容は以下のとおりです。 #include <iostream.h> void main(){ cout<<"ffff"; }

  • エラーに関する質問

    Fatal: オプションが必要 : Lc:\Borland\Bcc55\lib ↑のようなエラーが出のですが、解決方法がわかりません 解決方法がわかる方がいましたら教えてください ついでに使ってる開発環境はBCC Developerです ↓は、コンパイル使用としたソースコードと、コンパイルの経過です #include <iostream.h> using namespace std; void main() { int i; int t; int p; char g; while(i=4578){ cin>>p; cin>>g; cin>>t; if(i==t) cout<<"test"; break; }; }; 経過 > C:\borland\bcc55\Bin\make.exe -fDebug\roger.mak INIT TARGET MAKE Version 5.2 Copyright (c) 1987, 2000 Borland echo -WC -3 -Od -w- -AT -pc -H- -k -b -v -y -L"c:\Borland\Bcc55\lib" -DDEBUG -nDebug -c > Debug\roger.rsp echo C:\WINDOWS\デスクトップ\プロジェクト\roger\hyahya.cpp >> Debug\roger.rsp bcc32 @Debug\roger.rsp Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland C:\WINDOWS\デスクトップ\プロジェクト\roger\hyahya.cpp: bcc32 -WC -3 -Od -w- -AT -pc -H- -k -b -v -y -L"c:\Borland\Bcc55\lib" -DDEBUG -eDebug\roger.exe Debug\hyahya.obj Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland Fatal: オプションが必要 : Lc:\Borland\Bcc55\lib ** error 1 ** deleting Debug\roger.exe Make End !! (Elapsed time 0:00.923)

  • c++ , template , ファイル分割 , 助けてください...

    //-----------------coord.h------------- template <class type> class coord { type v[3]; public: coord(void); void Show(void); }; //-----------------main.cpp------------ #include<iostream> #include"coord.h" using namespace std; int main(void) { coord<double> ob; ob.Show(); return 0; } //----------------------coord.cpp----------- #include<iostream> #include"coord.h" using namespace std; template <class type> coord<type>::coord(void) { v[0]=v[1]=v[2]=0; } template <class type> void coord<type>::Show(void) { cout << "hello" << endl; } 同一フォルダ内に上記のファイルが 3 つあります. つまり上の 3 つのファイルを分割してコンパイルさせたいです. この状態で...MS-DOSプロンプトからコンパイルします. C:\test>bcc32 -c coord.cpp Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland coord.cpp: C:\test>bcc32 -c main.cpp Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland main.cpp: C:\test>bcc32 -emain main.obj coord.obj Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland Error: 外部シンボル 'coord<double>::coord<double>()' が未解決(C:\USERS\TAITO\PR OG\CPP\TEST\MAIN.OBJ が参照) Error: 外部シンボル 'coord<double>::Show()' が未解決(C:\USERS\TAITO\PROG\CPP\TE ST\MAIN.OBJ が参照) すると, このようなエラー文が出てしまい 実行可能ファイルができません. コンパイラはbccです. 原因が全く分かりません. 助けてください... ちなみに, 分割せずにコンパイルすると通ります. 自分は c 言語での分割コンパイル経験はあるので それをそのまま c++ 言語でも用いているのですが, 何か変えなければならないのでしょうか?

  • BCC Developerでのメイクでエラーが出る

    C++を勉強し始めたものですが、BCC Developerでメイクしたときにエラーがでて、コマンドプロンプトが表示されなくて困っています。 http://www.plustarnet.com/aspil/Programming/c00.htmを参考に、 Borland C++ Compiler 5.5とBCC Developer、setbccをインストールし、 http://www.plustarnet.com/aspil/Programming/c01.htmを参考に void main(void) { } という簡単なプログラムをメイクしたのですが、 エラーが出てしまいます。 以下が、そのエラーのときに表示された文です。 > "C:\Program Files\borland\bcc55\Bin\make.exe" -f.\SampleSTG.mak TARGET MAKE Version 5.2 Copyright (c) 1987, 2000 Borland bcc32 -W -3 -Od -w- -AT -pc -H- -k -b -v -y -DDEBUG -n. -c "C:\Documents and Settings\匿名\デスクトップ\SampleSTG\first.cpp" Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland c:\documents and settings\匿名\デベハトップ\samplestg\first.cpp: エラー F1009 c:\documents and settings\匿名\デベハトップ\samplestg\first.cpp: 入力ファイル 'c:\documents and settings\匿名\デベハトップ\samplestg\first.cpp' をオープンできない *** 1 errors in Compile *** ** error 1 ** deleting .\first.obj Make End !! (Elapsed time 0:00.511) エラーの意味もわからないし、ググっても解決法が分からなかったので 書き込みしました。 わかる方、解答お願い致します。

  • libjpegに関する質問

    bcc5.5.1でlibjpegを使いたいのですがうまくいきません 説明サイトどおりにmakeして、生成された全てのヘッダファイルをc:¥borland\bcc55¥Includeに移動してlibjpeg.libはc:¥borland¥bcc55¥Libに移動したのですが、 Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland jpeg_read_test.c: Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland Error: 外部シンボル '_jpeg_std_error' が未解決(C:\CPP\JPEG_READ_TEST.OBJ が参照) Error: 外部シンボル '_jpeg_CreateDecompress' が未解決(C:\CPP\JPEG_READ_TEST.OBJ が参照) Error: 外部シンボル '_jpeg_stdio_src' が未解決(C:\CPP\JPEG_READ_TEST.OBJ が参照) Error: 外部シンボル '_jpeg_read_header' が未解決(C:\CPP\JPEG_READ_TEST.OBJ が参照) と出てしまいます。 libjpeg.libが認識されていないのだと思いますが解決方法が分かりません 知っている方がいたら教えてください

  • DxLibについて質問です

    DxLibを使ったプログラムがコンパイルできません。 下がそのプログラムです #include "DxLib.h" int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { if( DxLib_Init() == -1 ) { return -1; } DrawBox(100,100,300,300,GetColor(255,255,255),TRUE); WaitKey(); DxLib_End(); return 0; } http://p.booklog.jp/book/46490/chapter/77396 このサイトに従って、DXライブラリを使うセットアップをしたのですが、 下のようなエラーコードが出てきます。 ■C:\Users\masaki\Desktop\C> bcc32 windows.cpp Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland windows.cpp: 警告 W8022 C:\borland\bcc55\Include\DxDirectX.h 6121: 'D_CTransInPlaceFilter::Transform(D_IMediaSample *)' が仮想関数 'D_CTransformFilter::Transform(D_IMediaSample *,D_IMediaSample *)' を隠蔽する 警告 W8094 C:\borland\bcc55\Include\DxLib.h 100: #pragma comment( <type> [,"string"] ) の使用法に誤りがある 警告 W8094 C:\borland\bcc55\Include\DxLib.h 101: #pragma comment( <type> [,"string"] ) の使用法に誤りがある 警告 W8094 C:\borland\bcc55\Include\DxLib.h 102: #pragma comment( <type> [,"string"] ) の使用法に誤りがある 警告 W8057 windows.cpp 13: パラメータ 'hInstance' は一度も使用されない(関数 __stdcall WinMain(HINSTANCE__ *,HINSTANCE__ *,char *,int) ) 警告 W8057 windows.cpp 13: パラメータ 'hPrevInstance' は一度も使用されない(関数 __stdcall WinMain(HINSTANCE__ *,HINSTANCE__ *,char *,int) ) 警告 W8057 windows.cpp 13: パラメータ 'lpCmdLine' は一度も使用されない(関数 __stdcall WinMain(HINSTANCE__ *,HINSTANCE__ *,char *,int) ) 警告 W8057 windows.cpp 13: パラメータ 'nCmdShow' は一度も使用されない(関数 __stdcall WinMain(HINSTANCE__ *,HINSTANCE__ *,char *,int) ) Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland Fatal: ファイル SHELL32.LIB が開けません shell32.libが開けないとあり、自分でも調べたのですが、自分にはその内容が理解できず、このサイトに質問を投稿しました。 コンパイラは、Borland C++ Compiler 5.5.1 OSは、Windows 7 Ultimate エディタは、CPad for Borland C++ Compiler ver.2.3.1 です。 よろしくお願いします。

  • Borland C++5.51で

    8MB超のソース junk.cpp を bcc32 -I"c:\Borland\Bcc55\include" -L"c:\Borland\Bcc55\lib" -W -WM -VM junk としてコンパイルしようとしたら Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland junk.cpp: Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland Fatal: Error detected (IMP302) Fatal: となりエラーになりました 8MBを切れば大丈夫だったのです IMP302とerrorで検索すると 外国に同じ問題でメーリングリストに質問しているものがあったのですが回答が得られていません 本人はリンク時エラーなのでソース分割すれば通る事は通るといっていました 分割が大変なソースなのでこのエラーをクリアしたいのですが解決策は無いのでしょうか?

  • Cコンパイラーのついてのご質問です。

    Cの勉強をしようとして、 MS-DOSを開いて、 bcc32 sample11.cといれてコンパイルをしようとしたんですが、『 C:\source>bcc32 sample11.c Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland sample11.c: Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland Fatal: ファイル C0X32.OBJ が開けません C:\source>    』のようにでてきましたどうすれば良いのでしょうか?教えてください。 (ちなみに、今回のプログラムは #include <stdio.h> main() { printf("Hello!"); return 0; } です初めてのプログラムなので簡単です。)初めてプログラミングを勉強するので、できれば、詳しくお願いします。

  • PathIsDirectoryを使って

    #include <windows.h> #include <stdio.h> //#include <Dbghelp.h> #include <shlwapi.h> void main(void) { char *Path = "c:\\windows\\system32\\"; if(PathIsDirectory(Path)) printf("'%s'は正しいディレクトリである。\n",Path); else printf("'%s'は正しいディレクトリでない。\n",Path); } をボーランドC++5.5でコンパイルすると Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland test.cpp: Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland Error: 外部シンボル 'PathIsDirectoryA' が未解決(C:\BORLAND\test.OBJ が参照) というエラーがでました。 どうしたらいいのでしょうか?

  • リンカのコマンドライン

    こんにちは。 C言語の勉強をしているのですが、リンカができなくて困っています。 環境: OS:windows2000 コンパイラ:Borland C++ 5.5 (他に必要な環境があれば、ご教授ください) まず、main()関数と作成した関数をコンパイルします。 Borland C++ 5.5のヘルプを参照して、 「bcc32 main.obj make.obj pro.lib」 これでリンクしようとしたのですが、 「ファイル pro.libが開けません」 とプロンプトに出力されます。 (main()関数→main.obj 作成した関数→make.obj 関数プロトタイプ宣言するファイル→pro.lib)  保存は(main.obj→main.cpp、make.obj→make.cpp、pro.lib→pro.h) と以上のようになっております。 コーディングミスは参考書を散々読み直したので、間違いないと思っております。 ただ、参考書が間違っていたら、取り付く島もありません。 どうぞ、お願いいたします。