2014-12-23 3 views
0

나는 android와 ios 모두에 배포 할 게임을 가지고 있습니다. ios 버전은 잘 작동하며 오류없이 컴파일됩니다. 하지만 내가 build_native.py을 실행할 때 정의되지 않은 오류가 발생했습니다. 아래에 내 코드와 오류 메시지가 포함됩니다. 미리 감사드립니다.Android에서 정의되지 않은 Cocos2d-x 3.2 슬라이더

CODE

#ifndef __SETTING_SCENE_H__ 
#define __SETTING_SCENE_H__ 

#include "cocos2d.h" 
#include "ui/CocosGUI.h" 

USING_NS_CC; 
using namespace ui; 

class SettingScreen : public cocos2d::Layer { 
public: 
// 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(); 

// implement the "static create()" method manually 
CREATE_FUNC(SettingScreen); 

int fontSize = 18; 
int bgmVolume = 100; 
int sfxVolume = 100; 

void Back(Ref *pSender); 
void BgmSliderEvent(Ref *pSender, Slider::EventType type); 
void SfxSliderEvent(Ref *pSender, Slider::EventType type); 
}; 
#endif // __SETTING_SCENE_H__ 

ERROR

The Selected NDK toolchain version was 4.8 ! 
Android NDK: WARNING:jni/../../cocos2d/cocos/./Android.mk:cocos2dx_static: LOCAL_LDLIBS is always ignored for static libraries  
Android NDK: WARNING:jni/../../cocos2d/cocos/platform/android/Android.mk:cocos2dxandroid_static: LOCAL_LDLIBS is always ignored for static libraries  
make: Entering directory `/cocos2dx/TestGame/proj.android' 
[armeabi] SharedLibrary : libcocos2dcpp.so 
jni/../../Classes/Scenes/SettingScene.cpp:72: error: undefined reference to 'cocos2d::ui::Slider::create()' 
jni/../../Classes/Scenes/SettingScene.cpp:73: error: undefined reference to 'cocos2d::ui::Slider::loadBarTexture(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, cocos2d::ui::Widget::TextureResType)' 
jni/../../Classes/Scenes/SettingScene.cpp:74: error: undefined reference to 'cocos2d::ui::Slider::loadSlidBallTextures(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, cocos2d::ui::Widget::TextureResType)' 
jni/../../Classes/Scenes/SettingScene.cpp:80: error: undefined reference to 'cocos2d::ui::Slider::setPercent(int)' 
jni/../../Classes/Scenes/SettingScene.cpp:81: error: undefined reference to 'cocos2d::ui::Slider::addEventListener(std::__1::function<void (cocos2d::Ref*, cocos2d::ui::Slider::EventType)> const&)' 
jni/../../Classes/Scenes/SettingScene.cpp:91: error: undefined reference to 'cocos2d::ui::Slider::create()' 
jni/../../Classes/Scenes/SettingScene.cpp:92: error: undefined reference to 'cocos2d::ui::Slider::loadBarTexture(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, cocos2d::ui::Widget::TextureResType)' 
jni/../../Classes/Scenes/SettingScene.cpp:93: error: undefined reference to 'cocos2d::ui::Slider::loadSlidBallTextures(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, cocos2d::ui::Widget::TextureResType)' 
jni/../../Classes/Scenes/SettingScene.cpp:99: error: undefined reference to 'cocos2d::ui::Slider::setPercent(int)' 
jni/../../Classes/Scenes/SettingScene.cpp:100: error: undefined reference to 'cocos2d::ui::Slider::addEventListener(std::__1::function<void (cocos2d::Ref*, cocos2d::ui::Slider::EventType)> const&)' 
jni/../../Classes/Scenes/SettingScene.cpp:113: error: undefined reference to 'cocos2d::ui::Slider::getPercent() const' 
jni/../../Classes/Scenes/SettingScene.cpp:116: error: undefined reference to 'typeinfo for cocos2d::ui::Slider' 
jni/../../Classes/Scenes/SettingScene.cpp:121: error: undefined reference to 'cocos2d::ui::Slider::getPercent() const' 
jni/../../Classes/Scenes/SettingScene.cpp:124: error: undefined reference to 'typeinfo for cocos2d::ui::Slider' 
clang++: error: linker command failed with exit code 1 (use -v to see invocation) 
make: *** [obj/local/armeabi/libcocos2dcpp.so] Error 1 
make: Leaving directory `/cocos2dx/TestGame/proj.android' 
Traceback (most recent call last): 
File "TestGame/proj.android/build_native.py", line 159, in <module> 
build(opts.ndk_build_param,opts.android_platform,opts.build_mode) 
File "TestGame/proj.android/build_native.py", line 146, in build 
do_build(cocos_root, ndk_root, app_android_root,ndk_build_param,sdk_root,android_platform,build_mode) 
File "TestGame/proj.android/build_native.py", line 82, in do_build 
raise Exception("Build dynamic library for project [ " + app_android_root + " ] fails!") 
Exception: Build dynamic library for project [ /cocos2dx/TestGame/proj.android ] fails! 

답변

1

다음과 같은 코드로 proj.android 디렉토리 아래에 당신의 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 

LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../Classes 

LOCAL_WHOLE_STATIC_LIBRARIES := cocos2dx_static 
LOCAL_WHOLE_STATIC_LIBRARIES += cocosdenshion_static 
LOCAL_WHOLE_STATIC_LIBRARIES += cocos_ui_static 


include $(BUILD_SHARED_LIBRARY) 

$(call import-module,.) 
$(call import-module,audio/android) 

$(call import-module,ui) 

P LOCAL_WHOLE_STATIC_LIBRARIES += cocos_ui_static$(call import-module,ui)에주의하십시오. 이 두 줄은 프로젝트에 ui 종속성을 추가합니다.

+0

감사합니다. 이제 작동 중입니다. 내 Android.mk에 LOCAL_WHOLE_STATIC_LIBRARIES + = cocos_ui_static 및 $ (import module, UI 호출)을 추가했습니다. –