cocos2dx eclipse:各种“错误:未定义引用”

时间:2013-01-30 17:39:32

标签: android c++ eclipse android-ndk cocos2d-x

我正在尝试使用cocos2dx 2.0.4将iOS游戏移植到Android平台。 游戏的核心是用c ++编写的,我们设法在iOS上运行它,实际上游戏可以在Apple Store上运行。 我正在使用NDK r8d和最新的SDK,但在尝试构建时遇到了很多问题。

我的application.mk是这样的:

APP_STL := stlport_shared
APP_CPPFLAGS := -frtti
NDK_TOOLCHAIN_VERSION=4.7

Android.mk:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

ifdef STLG
    LOCAL_MODULE := stlport_stlg
else
    LOCAL_MODULE := stlport
endif
LOCAL_CFLAGS += -D__ANDROID__ \
     -isystem $(SYSROOT)/usr/include \
LOCAL_MODULE := game_shared

LOCAL_MODULE_FILENAME := libgame

LOCAL_CPPFLAGS += -fexceptions                   


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

LOCAL_WHOLE_STATIC_LIBRARIES := cocos2dx_static cocosdenshion_static cocos_extension_static

include $(BUILD_SHARED_LIBRARY)

$(call import-module,CocosDenshion/android) \
$(call import-module,cocos2dx) \
$(call import-module,extensions)

这是控制台日志(仅显示错误):

/Users/arianna/android/android-ndk-r8d/sources/cxx-stl/stlport/stlport/stl/_alloc.h:158: error: undefined reference to 'std::__node_alloc::_M_allocate(unsigned int&)'
make: Leaving directory `/Users/arianna/android/cocos2d-2.0-x-2.0.4/grannnnnnny/proj.android'
/Users/arianna/android/android-ndk-r8d/sources/cxx-stl/stlport/stlport/stl/_alloc.h:161: error: undefined reference to 'std::__node_alloc::_M_deallocate(void*, unsigned int)'
/Users/arianna/android/android-ndk-r8d/sources/cxx-stl/stlport/stlport/stl/_string.c:600: error: undefined reference to 'std::__stl_throw_length_error(char const*)'
/Users/arianna/android/cocos2d-2.0-x-2.0.4/grannnnnnny/proj.android/../../cocos2dx/actions/CCActionInterval.cpp:386: error: undefined reference to '__dynamic_cast'
/Users/arianna/android/cocos2d-2.0-x-2.0.4/grannnnnnny/proj.android/../../cocos2dx/actions/CCActionInterval.cpp:1783: error: undefined reference to '__dynamic_cast'
/Users/arianna/android/cocos2d-2.0-x-2.0.4/grannnnnnny/proj.android/../../cocos2dx/actions/CCActionInterval.cpp:1838: error: undefined reference to '__dynamic_cast'
/Users/arianna/android/cocos2d-2.0-x-2.0.4/grannnnnnny/proj.android/../../cocos2dx/actions/CCActionInterval.cpp:1906: error: undefined reference to '__dynamic_cast'
/Users/arianna/android/android-ndk-r8d/sources/cxx-stl/stlport/stlport/stl/_vector.c:41: error: undefined reference to 'std::__stl_throw_length_error(char const*)'
/Users/arianna/android/android-ndk-r8d/sources/cxx-stl/stlport/stlport/stl/_vector.c:45: error: undefined reference to 'std::__stl_throw_out_of_range(char const*)'
/Users/arianna/android/android-ndk-r8d/sources/cxx-stl/stlport/stlport/stl/_string.c:604: error: undefined reference to 'std::__stl_throw_out_of_range(char const*)'

/Users/arianna/android/android-ndk-r8d/sources/cxx-stl/stlport/stlport/stl/_vector.c:41: error: undefined reference to 'std::__stl_throw_length_error(char const*)'

./obj/local/armeabi/libcocos2d.a(CCDirector.o):CCDirector.cpp:function typeinfo for cocos2d::CCDirector: error: undefined reference to 'vtable for __cxxabiv1::__vmi_class_type_info'

/Users/arianna/android/android-ndk-r8d/sources/cxx-stl/stlport/stlport/stl/_vector.c:41: error: undefined reference to 'std::__stl_throw_length_error(char const*)'

collect2: error: ld returned 1 exit status

make: *** [obj/local/armeabi/libgame.so] Error 1

非常感谢任何帮助,谢谢...

2 个答案:

答案 0 :(得分:0)

在application.mk APP_STL:= gnustl_static?

中试试这个

答案 1 :(得分:0)

您收到上述未定义的引用错误,因为您尚未在Android.mk文件中添加必要的库。它看起来像这样

LOCAL_LDLIBS:= -L $(调用主机路径,$(LOCAL_PATH)/../../ libs / $(TARGET_ARCH_ABI))\                 -lcocos2d -lGLESv1_CM -llog -lgame_logic

即使添加了库,我仍然坚持这个问题。它与设置路径有关,但我不知道如何...

如果你解决了这个问题,请告诉我