3

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

安卓.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

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

4

2 回答 2

0

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

于 2013-01-31T10:33:57.200 回答
0

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

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

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

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

于 2013-04-11T07:10:38.467 回答