7

iOS デバイスで XCode から起動すると完全に動作する XCode を使用して Cocos2d-X アプリを開発しました。

今、私はそれをAndroidに移植したいと考えています。私が理解しているのは、「XCodeプロジェクト」をコンパイルしてAndroidデバイスで起動できるようにするには、「XCodeプロジェクト」をEclipseにインポートする方法を見つける必要があるということです。

私は現在、このチュートリアルに従って、このプロジェクトをハイブリッド iOS/Android プロジェクトに変換しようとしています: http://gameit.ro/2012/01/creating-an-iphone-and-android-cocos2d-x-hybrid-project-updated /#コメント-640

それにもかかわらず、このハイブリッド プロジェクトを開いて Eclipse に cpp クラス (cocos2d-x C++ クラス) が表示されず、build_native.sh でコンパイルしようとすると次のエラーが表示されます。

Compile++ thumb  : game_logic <= AppDelegate.cpp
jni/../../Classes/AppDelegate.cpp:14:23: error: IntroMenu.h: No such file or directory
jni/../../Classes/AppDelegate.cpp:15:23: error: GameLayer.h: No such file or directory
jni/../../Classes/AppDelegate.cpp:16:26: error: ScoreManager.h: No such file or directory
jni/../../Classes/AppDelegate.cpp: In member function 'virtual bool AppDelegate::applicationDidFinishLaunching()':
jni/../../Classes/AppDelegate.cpp:99: error: invalid use of incomplete type 'struct ScoreManager'
jni/../../Classes/AppDelegate.h:17: error: forward declaration of 'struct ScoreManager'
jni/../../Classes/AppDelegate.cpp:101: error: invalid use of incomplete type 'struct ScoreManager'
jni/../../Classes/AppDelegate.h:17: error: forward declaration of 'struct ScoreManager'
jni/../../Classes/AppDelegate.cpp:118: error: 'GameLayer' has not been declared
jni/../../Classes/AppDelegate.cpp:120: error: 'IntroMenu' has not been declared
make: *** [obj/local/armeabi/objs-debug/game_logic/AppDelegate.o] Error 1
macbook-de-regis-andre-2:android regisandre$ ./build_native.sh

一部のファイルを Eclipse にインポートする必要がありますか? 一部の android.mk ファイルを変更する必要がありますか? 他の何か?

誰でも私を助けたり、このトピックに関するチュートリアルを書いたりできますか? ありがとう !!

4

2 に答える 2

12

見た目から、次のように、カスタム作成したファイルを Classes/Android.mk の LOCAL_SRC_FILES セクションに追加する必要があります。

LOCAL_SRC_FILES := AppDelegate.cpp \
                   HelloWorldScene.cpp \
                   IntroMenu.cpp \
                   GameLayer.cpp \
                   ScoreManager.cpp

ビルド プロセスに含める必要がある新しいファイルを Android ビルド ファイルに知らせるために、これを行う必要があります。

プロジェクトに追加する新しいソース ファイルごとに、これを行う必要があります。

于 2012-02-08T11:29:36.690 に答える
0

@clawoo は正しいですが、プロジェクトに追加するすべてのファイルを含める必要はありません。代わりに、次のことを実行して忘れることができます ;)

新しいソース ファイルがプロジェクトに追加されるたびにファイルを更新する必要がないようにするには、次のスクリプトを使用できます (ここにあります: http://www.cocos2d-x.org/boards/6/topics/5321 ) 。

dirs := $(shell find $(LOCAL_PATH) -type d)

cppfilestemp1 := $(shell find $(LOCAL_PATH) -type d)
cppfilestemp2 := $(shell find $(cppfilestemp1) -name *.cpp)
cppfilestemp3 := $(sort $(cppfilestemp2))
cppfiles := $(subst $(LOCAL_PATH)/,,$(cppfilestemp3))

LOCAL_SRC_FILES := \
           $(cppfiles)

ファイルが別の場所にある場合は、次のように覚えておいてください。

LOCAL_SRC_FILES := main.cpp \
../../../Classes/AppDelegate.cpp \
../../../Classes/HelloWorldScene.cpp \

次のことができます。

cppfilestemp1 := $(shell find $(LOCAL_PATH)/../../../Classes/ -type d)

LOCAL_SRC_FILES := main.cpp
LOCAL_SRC_FILES += $(cppfiles)

私の場合はうまくいきました。

ヒント:

コンパイラーが「ターゲット /.../ を作成するルールがありません」と不平を言う問題がある場合は、Eclipse で obj/local/armeabi/objs-debug/game_shared フォルダーの内容を削除することをお勧めします。次に、build_native.sh を再実行し、obj フォルダーの内容を更新 (F5) します。

于 2012-08-26T18:43:21.800 に答える