PSPで龍神録

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
人生オワタ

PSPで龍神録

#1

投稿記事 by 人生オワタ » 10年前

始めまして。

今、龍神録の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とかを触ったんで

できる限り詳しく教えて下さると 有り難いです

Poco
記事: 161
登録日時: 13年前

Re: PSPで龍神録

#2

投稿記事 by Poco » 10年前

ソースコード見ていないのでゲスパーですが。
いずれのエラーもmakeは全く関係ありません。
C言語(C++?)のコンパイルエラーです。
2行目:インクルードパスの設定が悪いのか、実際にインクルードハスから../include/にGV.hが配置されてないだけです。
6~9行目:これらってDXライブラリの関数ですよね?DXLib.hがちゃんとインクルードされていません。※GV.hが読めないから出ているエラーの可能性もあります。
13行目:分かりません。

人生オワタ

Re: PSPで龍神録

#3

投稿記事 by 人生オワタ » 10年前

いまさらですがmain.cppとini.cppのソースはります
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で龍神録

#4

投稿記事 by softya(ソフト屋) » 10年前

GV.hがmain.cppに対して相対パスとして何処に有るかわかりますか? エラーな原因が、これにあると思われます。
フォルダ構成を書いてもらったほうが良さそうです。
ちなみに PSPSDK for Windows のGCCでコンパイルしていると思われますので、コンパイル時にMicrosoft Visual C++ 2010は全く使われておりません。

【補足】
Windowsの龍神録のフォルダ構成のままだと、たぶん問題が出ると思います。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

人生オワタ

Re: PSPで龍神録

#5

投稿記事 by 人生オワタ » 10年前

ファイルの構成みたいなものです。
C:.
ユーザー
デスクトップ
├─include
└─lib
main.cpp ini.cpp とか
makefile

ツリー?の書き方がわからないので

こんなかんじになってしまいました。

softya(ソフト屋)さん有り難うございました。

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 13年前
住所: 東海地方
連絡を取る:

Re: PSPで龍神録

#6

投稿記事 by softya(ソフト屋) » 10年前

C:かデスクトップに直置きだと後で支障が出るので専用フォルダを作られる事をおすすめします。

さて、質問の件ですがmain.cppと同じフォルダにincludeフォルダが有る場合、
#include "include/GV.h"
が正しいです。書き換えて試してみてください。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

人生オワタ

Re: PSPで龍神録

#7

投稿記事 by 人生オワタ » 10年前

includeのところ書き変えたあとにもエラーが出ました…

コード:

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で龍神録

#8

投稿記事 by softya(ソフト屋) » 10年前

中学生とか関係なくゲームプログラミングは難しいです。大学生でも難しいです。なので、ほぼ年齢は関係ないと言えますね。
年齢よりも調べる根気とか、諦めない気持ち、あと検索力とかそんな物ができるか出来ないかを決めます。
あとプログラミングを楽しいと思える相性でしょうか。
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(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

閉鎖

“C言語何でも質問掲示板” へ戻る