始めまして。
今、龍神録の10章のPSP用にコンパイルしようとしているんですが、
コンパイルに失敗するのでみてもらいたいんです。
環境は
osはwindows7 starter
ideはMicrosoft Visual C++ 2010
sdkはMinimalist PSPSDK for Windows
です
ソースコードは龍神録のものをそのまま使っています
makefileは
TARGET = TestProject
OBJS = main.o chair.o cshot.o enemy.o enemy_act_pattern.o fps.o graph.o graph_back.o ini.o key.o load.o music.o out.o shot.o shotH.o
INCDIR =
CFLAGS = -O3 -G0 -Wall
CXXFLAGS = $(CFLAGS) -fno-exceptions -fno-rtti -fcheck-new
ASFLAGS = $(CFLAGS)
LIBDIR =
LDFLAGS =
LIBS =/lib/dxlibp.a
EXTRA_TARGETS = EBOOT.PBP
PSP_EBOOT_TITLE = test
PSPSDK=$(shell psp-config --pspsdk-path)
include $(PSPSDK)/lib/build.mak
こんなかんじです
エラーはこんなかんじです
C:\MyFirstC\MySrc>make
psp-g++ -I. -IC:/pspsdk/psp/sdk/include -O3 -G0 -Wall -I. -IC:/pspsdk/psp/sdk/in
clude -O3 -G0 -Wall -fno-exceptions -fno-rtti -fcheck-new -D_PSP_FW_VERSION=150
-c -o main.o main.cpp
main.cpp:2:27: error: ../include/GV.h: No such file or directory
main.cpp: In function 'int ProcessLoop()':
main.cpp:6: error: 'ProcessMessage' was not declared in this scope
main.cpp:7: error: 'ClearDrawScreen' was not declared in this scope
main.cpp:8: error: 'GetHitKeyStateAll_2' was not declared in this scope
main.cpp:9: error: 'GetHitPadStateAll' was not declared in this scope
main.cpp: At global scope:
main.cpp:13: error: expected initializer before 'WinMain'
make: *** [main.o] Error 1
ほとんど初めてmakefileとかを触ったんで
できる限り詳しく教えて下さると 有り難いです
PSPで龍神録
Re: PSPで龍神録
ソースコード見ていないのでゲスパーですが。
いずれのエラーもmakeは全く関係ありません。
C言語(C++?)のコンパイルエラーです。
2行目:インクルードパスの設定が悪いのか、実際にインクルードハスから../include/にGV.hが配置されてないだけです。
6~9行目:これらってDXライブラリの関数ですよね?DXLib.hがちゃんとインクルードされていません。※GV.hが読めないから出ているエラーの可能性もあります。
13行目:分かりません。
いずれのエラーもmakeは全く関係ありません。
C言語(C++?)のコンパイルエラーです。
2行目:インクルードパスの設定が悪いのか、実際にインクルードハスから../include/にGV.hが配置されてないだけです。
6~9行目:これらってDXライブラリの関数ですよね?DXLib.hがちゃんとインクルードされていません。※GV.hが読めないから出ているエラーの可能性もあります。
13行目:分かりません。
Re: PSPで龍神録
いまさらですがmain.cppとini.cppのソースはります
main.cppは
ini.cppは
です。
教えてくださったpocoさんありがとうございます。
main.cppは
#define GLOBAL_INSTANCE
#include "../include/GV.h"
#include <lib/dxlibp.h>
PSP_MODULE_INFO("ZAKI", 0, 1, 1);
PSP_MAIN_THREAD_ATTR(THREAD_ATTR_USER | THREAD_ATTR_VFPU);
//ループで必ず行う3大処理
int ProcessLoop(){
if(ProcessMessage()!=0)return -1;//プロセス処理がエラーなら-1を返す
if(ClearDrawScreen()!=0)return -1;//画面クリア処理がエラーなら-1を返す
GetHitKeyStateAll_2();//現在のキー入力処理を行う
GetHitPadStateAll(); //現在のパッド入力処理を行う
return 0;
}
int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow){
ChangeWindowMode(TRUE);//ウィンドウモード
if(DxLib_Init() == -1 || SetDrawScreen( DX_SCREEN_BACK )!=0) return -1;//初期化と裏画面化
while(ProcessLoop()==0){//メインループ
switch(func_state){
case 0://初回のみ入る処理
load(); //データロード
first_ini();//初回の初期化
func_state=99;
break;
case 99://STGを始める前に行う初期化
ini();
func_state=100;
break;
case 100://通常処理
calc_ch(); //キャラクタ計算
ch_move(); //キャラクタの移動制御
enemy_main();//敵処理メイン
graph_main();//描画メイン
stage_count++;
break;
default:
printfDx("不明なfunc_state\n");
break;
}
if(CheckStateKey(KEY_INPUT_ESCAPE)==1)break;//エスケープが入力されたらブレイク
ScreenFlip();//裏画面反映
}
DxLib_End();//DXライブラリ終了処理
return 0;
}
ini.cppは
#include "../include/GV.h"
#include <lib/dxlibp.h>
//一番最初の初期化
void first_ini(){
configpad.down=0;
configpad.left=1;
configpad.right=2;
configpad.up=3;
configpad.bom=4;
configpad.shot=5;
configpad.slow=11;
configpad.start=13;
configpad.change=6;
}
//ゲームの初期化
void ini(){
stage_count=0;
memset(&ch,0,sizeof(ch_t));//自機データの初期化
ch.x=FIELD_MAX_X/2;
ch.y=FIELD_MAX_Y*3/4;
memset(enemy,0,sizeof(enemy_t)*ENEMY_MAX);//敵データの初期化
}
です。
教えてくださったpocoさんありがとうございます。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: PSPで龍神録
GV.hがmain.cppに対して相対パスとして何処に有るかわかりますか? エラーな原因が、これにあると思われます。
フォルダ構成を書いてもらったほうが良さそうです。
ちなみに PSPSDK for Windows のGCCでコンパイルしていると思われますので、コンパイル時にMicrosoft Visual C++ 2010は全く使われておりません。
【補足】
Windowsの龍神録のフォルダ構成のままだと、たぶん問題が出ると思います。
フォルダ構成を書いてもらったほうが良さそうです。
ちなみに PSPSDK for Windows のGCCでコンパイルしていると思われますので、コンパイル時にMicrosoft Visual C++ 2010は全く使われておりません。
【補足】
Windowsの龍神録のフォルダ構成のままだと、たぶん問題が出ると思います。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: PSPで龍神録
ファイルの構成みたいなものです。
C:.
ユーザー
デスクトップ
├─include
└─lib
main.cpp ini.cpp とか
makefile
ツリー?の書き方がわからないので
こんなかんじになってしまいました。
softya(ソフト屋)さん有り難うございました。
C:.
ユーザー
デスクトップ
├─include
└─lib
main.cpp ini.cpp とか
makefile
ツリー?の書き方がわからないので
こんなかんじになってしまいました。
softya(ソフト屋)さん有り難うございました。
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: PSPで龍神録
C:かデスクトップに直置きだと後で支障が出るので専用フォルダを作られる事をおすすめします。
さて、質問の件ですがmain.cppと同じフォルダにincludeフォルダが有る場合、
#include "include/GV.h"
が正しいです。書き換えて試してみてください。
さて、質問の件ですがmain.cppと同じフォルダにincludeフォルダが有る場合、
#include "include/GV.h"
が正しいです。書き換えて試してみてください。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。
Re: PSPで龍神録
includeのところ書き変えたあとにもエラーが出ました…
「error: expected initializer before 'WinMain'」
のエラーについて検索したんですが
答えが見つけられませんでした…
このエラーは何を意味するのか教えて下さい。
お願いします。
「追記」
中学生にはこういうものは
まだ早いのでしょうか?
C:\Users\A\Desktop\ryuzin psp>make
psp-g++ -I. -IC:/pspsdk/psp/sdk/include -O3 -G0 -Wall -I. -IC:/pspsdk/psp/sdk/in
clude -O3 -G0 -Wall -fno-exceptions -fno-rtti -fcheck-new -D_PSP_FW_VERSION=150
-c -o main.o main.cpp
In file included from main.cpp:2:
include/GV.h:1:36: error: ../../../include/DxLib.h: No such file or directory
main.cpp:17: error: expected initializer before 'WinMain'
make: *** [main.o] Error 1
「error: expected initializer before 'WinMain'」
のエラーについて検索したんですが
答えが見つけられませんでした…
このエラーは何を意味するのか教えて下さい。
お願いします。
「追記」
中学生にはこういうものは
まだ早いのでしょうか?
- softya(ソフト屋)
- 副管理人
- 記事: 11677
- 登録日時: 13年前
- 住所: 東海地方
- 連絡を取る:
Re: PSPで龍神録
中学生とか関係なくゲームプログラミングは難しいです。大学生でも難しいです。なので、ほぼ年齢は関係ないと言えますね。
年齢よりも調べる根気とか、諦めない気持ち、あと検索力とかそんな物ができるか出来ないかを決めます。
あとプログラミングを楽しいと思える相性でしょうか。
PSPの場合ハードが貧弱ですので、PCよりも難易度が上昇します。
つまり詳しい知識がないと、思うような速度が出ないですし、すぐメモリが足らなくなります。
なので難易度はPSPの方が高いです。
これを直せば、「error: expected initializer before 'WinMain'」は解決するかもしれませんよ。
include/GV.h:1:36: error: ../../../include/DxLib.h: No such file or directory
これもフォルダとかの違いとか、PSPの場合 DxLib portableの導入がちゃんと出来ているかが問題となります。
http://dxlibp.sourceforge.jp/
【補足】
中学生とも成れば一般向けに書かれたプログラミングの入門書なども問題なく読み通せるだけの能力が有るはずです。
それを理解できるか応用できるかは個人の能力の問題であって、年齢ではありません。
年齢よりも調べる根気とか、諦めない気持ち、あと検索力とかそんな物ができるか出来ないかを決めます。
あとプログラミングを楽しいと思える相性でしょうか。
PSPの場合ハードが貧弱ですので、PCよりも難易度が上昇します。
つまり詳しい知識がないと、思うような速度が出ないですし、すぐメモリが足らなくなります。
なので難易度はPSPの方が高いです。
これを直せば、「error: expected initializer before 'WinMain'」は解決するかもしれませんよ。
include/GV.h:1:36: error: ../../../include/DxLib.h: No such file or directory
これもフォルダとかの違いとか、PSPの場合 DxLib portableの導入がちゃんと出来ているかが問題となります。
http://dxlibp.sourceforge.jp/
【補足】
中学生とも成れば一般向けに書かれたプログラミングの入門書なども問題なく読み通せるだけの能力が有るはずです。
それを理解できるか応用できるかは個人の能力の問題であって、年齢ではありません。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。