编译Windows版时一切正常(VS3013),但编译Android平台时找不到新添加的类,但生成项目时自动创建的HelloworldScene可以正常使用,其他新添加的类都找不到。
TestClass在Classes目录下,如果不引用TestClass类,可以编译通过。
错误信息如下:
python D:/cocos/game2048/proj.android/build_native.py -b release all
Android NDK: WARNING: APP_PLATFORM android-14 is larger than android:minSdkVersion 9 in ./AndroidManifest.xml
make.exe: Entering directory `D:/cocos/game2048/proj.android'
Compile++ thumb: cocos2dcpp_shared <= AppDelegate.cpp
Compile++ thumb: cocos2dcpp_shared <= HelloWorldScene.cpp
jni/../../Classes/HelloWorldScene.cpp: In member function 'virtual bool HelloWorld::init()':
jni/../../Classes/HelloWorldScene.cpp:76:28: error: 'TestClass' has not been declared
director->replaceScene(TestClass::createScene());
^
At global scope:
cc1plus.exe: warning: unrecognized command line option "-Wno-extern-c-compat"
cc1plus.exe: warning: unrecognized command line option "-Wno-extern-c-compat"
make.exe: *** Error 1
make.exe: *** Waiting for unfinished jobs....
```
代码:
auto director = Director::getInstance();
director->replaceScene(TestClass::createScene());
```
TestClass类内容:
#ifndef TESTCLASS_H_
#define TESTCLASS_H_
#include "cocos2d.h"
class TestClass : public cocos2d::Layer {
public:
TestClass();
virtual ~TestClass();
// there's no 'id' in cpp, so we recommend returning the class instance pointer
static cocos2d::Scene* createScene();
// Here's a difference. Method 'init' in cocos2d-x returns bool, instead of returning 'id' in cocos2d-iphone
virtual bool init();
// a selector callback
void menuCloseCallback(cocos2d::Ref* pSender);
// implement the "static create()" method manually
CREATE_FUNC(TestClass);
};
#endif /* TESTCLASS_H_ */
```
Android.mk 文件配置:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
$(call import-add-path,$(LOCAL_PATH)/../../cocos2d)
$(call import-add-path,$(LOCAL_PATH)/../../cocos2d/external)
$(call import-add-path,$(LOCAL_PATH)/../../cocos2d/cocos)
LOCAL_MODULE := cocos2dcpp_shared
LOCAL_MODULE_FILENAME := libcocos2dcpp
LOCAL_SRC_FILES := hellocpp/main.cpp \
../../Classes/AppDelegate.cpp \
../../Classes/HelloWorldScene.cpp \
../../Classes/TestClass.cpp
LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../Classes
LOCAL_STATIC_LIBRARIES := cocos2dx_static
include $(BUILD_SHARED_LIBRARY)
$(call import-module,.)
```