【问题标题】:cocos2dx eclipse: Various "error: undefined reference to "cocos2dx eclipse:各种“错误:未定义的引用”
【发布时间】:2013-01-30 17:39:31
【问题描述】:

我正在尝试使用 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

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

【问题讨论】:

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


    【解决方案1】:

    在 application.mk APP_STL 中试试这个:= gnustl_static?

    【讨论】:

      【解决方案2】:

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

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

      即使在添加库之后,我也遇到了这个问题。它与设置路径有关,但我不知道如何..

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-17
        • 1970-01-01
        • 2017-07-26
        相关资源
        最近更新 更多