在eclipse中生成android版本的cocos2d-x 游戏,使用cocos2d-x 3.0 beta2。在程序中使用了控件(Text、Checkbox等)。但linker时出错,而同样的程序,ios是好使的。首先Android.mk中所有的.cpp文件肯定是都引用了。然后将xcode中的所有header include都放到Android.mk文件中的。并且android.mk文件的其他内容如下:
… 省略了前面的内容…
LOCAL_C_INCLUDES := (LOCAL_PATH)/../../Classes
LOCAL_C_INCLUDES += (LOCAL_PATH)/…/…/cocos2d/extensions
LOCAL_C_INCLUDES += (LOCAL_PATH)/../../cocos2d/extensions/GUI/CCControlExtension
LOCAL_C_INCLUDES += (LOCAL_PATH)/…/…/cocos2d/cocos
LOCAL_C_INCLUDES += (LOCAL_PATH)/../../cocos2d/cocos/base
LOCAL_C_INCLUDES += (LOCAL_PATH)/…/…/cocos2d/cocos/physics
LOCAL_C_INCLUDES += (LOCAL_PATH)/../../cocos2d/cocos/math/kazmath/include
LOCAL_C_INCLUDES += (LOCAL_PATH)/…/…/cocos2d/cocos/2d
LOCAL_C_INCLUDES += (LOCAL_PATH)/../../cocos2d/extensions/GUI/CCScrollView
LOCAL_C_INCLUDES += (LOCAL_PATH)/…/…/cocos2d/external/chipmunk/include/chipmunk
LOCAL_C_INCLUDES += (LOCAL_PATH)/../../cocos2d/cocos/editor-support
LOCAL_C_INCLUDES += (LOCAL_PATH)/…/…/cocos2d/cocos/audio/include
LOCAL_C_INCLUDES += (LOCAL_PATH)/../../cocos2d/cocos/network
LOCAL_C_INCLUDES += (LOCAL_PATH)/…/…/cocos2d/cocos/gui
LOCAL_WHOLE_STATIC_LIBRARIES := cocos2dx_static
LOCAL_WHOLE_STATIC_LIBRARIES += cocosdenshion_static
LOCAL_WHOLE_STATIC_LIBRARIES += box2d_static
LOCAL_WHOLE_STATIC_LIBRARIES += cocos_extension_static
LOCAL_WHOLE_STATIC_LIBRARIES += cocos_gui_static
LOCAL_WHOLE_STATIC_LIBRARIES += cocosbuilder_static
LOCAL_WHOLE_STATIC_LIBRARIES += cocostudio_static
LOCAL_WHOLE_STATIC_LIBRARIES += cocos_network_static
include $(BUILD_SHARED_LIBRARY)
(call import-module,2d)
(call import-module,audio/android)
(call import-module,Box2D)
(call import-module,extensions)
(call import-module,gui)
(call import-module,editor-support/cocosbuilder)
$(call import-module,editor-support/cocostudio)
最后编译链接出现如下错误
SharedLibrary : libcocos2dcpp.so
./obj/local/armeabi/libextension.a(CCControl.o):CCControl.cpp:function vtable for cocos2d::extension::Control: error: undefined reference to ‘cocos2d::Node::setLocalZOrder(int)’
make: Leaving directory `/MyStudio/cocos2d-x/books/Cocos2dx_Game_Unleashed/Cocos2dxDemo/proj.android’
./obj/local/armeabi/libextension.a(CCControl.o):CCControl.cpp:function vtable for cocos2d::extension::Control: error: undefined reference to ‘cocos2d::Node::_setLocalZOrder(int)’
The Selected NDK toolchain version was 4.7 !
./obj/local/armeabi/libextension.a(CCControl.o):CCControl.cpp:function vtable for cocos2d::extension::Control: error: undefined reference to ‘cocos2d::Node::setGlobalZOrder(float)’
./obj/local/armeabi/libextension.a(CCControlHuePicker.o):CCControlHuePicker.cpp:function vtable for cocos2d::extension::ControlHuePicker: error: undefined reference to ‘cocos2d::Node::setLocalZOrder(int)’
./obj/local/armeabi/libextension.a(CCControlHuePicker.o):CCControlHuePicker.cpp:function vtable for cocos2d::extension::ControlHuePicker: error: undefined reference to ‘cocos2d::Node::_setLocalZOrder(int)’
./obj/local/armeabi/libextension.a(CCControlHuePicker.o):CCControlHuePicker.cpp:function vtable for cocos2d::extension::ControlHuePicker: error: undefined reference to ‘cocos2d::Node::setGlobalZOrder(float)’
./obj/local/armeabi/libextension.a(CCControlPotentiometer.o):CCControlPotentiometer.cpp:function vtable for cocos2d::extension::ControlPotentiometer: error: undefined reference to ‘cocos2d::Node::setLocalZOrder(int)’
./obj/local/armeabi/libextension.a(CCControlPotentiometer.o):CCControlPotentiometer.cpp:function vtable for cocos2d::extension::ControlPotentiometer: error: undefined reference to ‘cocos2d::Node::_setLocalZOrder(int)’
./obj/local/armeabi/libextension.a(CCControlPotentiometer.o):CCControlPotentiometer.cpp:function vtable for cocos2d::extension::ControlPotentiometer: error: undefined reference to ‘cocos2d::Node::setGlobalZOrder(float)’
./obj/local/armeabi/libextension.a(CCControlSaturationBrightnessPicker.o):CCControlSaturationBrightnessPicker.cpp:function vtable for cocos2d::extension::ControlSaturationBrightnessPicker: error: undefined reference to ‘cocos2d::Node::setLocalZOrder(int)’
./obj/local/armeabi/libextension.a(CCControlSaturationBrightnessPicker.o):CCControlSaturationBrightnessPicker.cpp:function vtable for cocos2d::extension::ControlSaturationBrightnessPicker: error: undefined reference to ‘cocos2d::Node::_setLocalZOrder(int)’
./obj/local/armeabi/libextension.a(CCControlSaturationBrightnessPicker.o):CCControlSaturationBrightnessPicker.cpp:function vtable for cocos2d::extension::ControlSaturationBrightnessPicker: error: undefined reference to ‘cocos2d::Node::setGlobalZOrder(float)’
/MyStudio/cocos2d-x/books/Cocos2dx_Game_Unleashed/Cocos2dxDemo/proj.android/…/cocos2d/extensions/GUI/CCScrollView/CCScrollView.cpp:532: error: undefined reference to ‘cocos2d::CustomCommand::init(float)’
/MyStudio/cocos2d-x/books/Cocos2dx_Game_Unleashed/Cocos2dxDemo/proj.android/…/cocos2d/extensions/GUI/CCScrollView/CCScrollView.cpp:497: error: undefined reference to ‘cocos2d::CustomCommand::init(float)’
/MyStudio/cocos2d-x/books/Cocos2dx_Game_Unleashed/Cocos2dxDemo/proj.android/…/cocos2d/cocos/2d/CCDirector.cpp:382: error: undefined reference to ‘cocos2d::Configuration::dumpInfo() const’
collect2: error: ld returned 1 exit status
make: *** Error 1
Traceback (most recent call last):
File “/MyStudio/cocos2d-x/books/Cocos2dx_Game_Unleashed/Cocos2dxDemo/proj.android/build_native.py”, line 147, in
build(opts.ndk_build_param,opts.android_platform,opts.build_mode)
File “/MyStudio/cocos2d-x/books/Cocos2dx_Game_Unleashed/Cocos2dxDemo/proj.android/build_native.py”, line 134, in build
do_build(cocos_root, ndk_root, app_android_root,ndk_build_param,sdk_root,android_platform,build_mode)
File “/MyStudio/cocos2d-x/books/Cocos2dx_Game_Unleashed/Cocos2dxDemo/proj.android/build_native.py”, line 70, in do_build
raise Exception(“Build dynamic library for project " + app_android_root + " ] fails!”)
Exception: Build dynamic library for project /MyStudio/cocos2d-x/books/Cocos2dx_Game_Unleashed/Cocos2dxDemo/proj.android ] fails!
10:22:50 Build Finished (took 58s.939ms)
Android.mk还需要引用什么吗?