Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/209.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android std::映射链接器错误ndk r8c,应用程序STL:=gnustl\u static_Android_C++_Stl_Linker_Android Ndk - Fatal编程技术网

Android std::映射链接器错误ndk r8c,应用程序STL:=gnustl\u static

Android std::映射链接器错误ndk r8c,应用程序STL:=gnustl\u static,android,c++,stl,linker,android-ndk,Android,C++,Stl,Linker,Android Ndk,我在本地应用程序中链接STL时遇到一些问题。使用map::operator[]和map::insert链接失败,而使用其他map函数链接成功。 我的Application.mk是: APP_STL := gnustl_static APP_CPPFLAGS := -fexceptions -frtti APP_CPPFLAGS += -g3 APP_CPPFLAGS += -DDEBUG APP_ABI := armeabi-v7a APP_PLATFORM:=android-14 NDK_TO

我在本地应用程序中链接STL时遇到一些问题。使用map::operator[]和map::insert链接失败,而使用其他map函数链接成功。 我的Application.mk是:

APP_STL := gnustl_static
APP_CPPFLAGS := -fexceptions -frtti
APP_CPPFLAGS += -g3
APP_CPPFLAGS += -DDEBUG
APP_ABI := armeabi-v7a
APP_PLATFORM:=android-14
NDK_TOOLCHAIN_VERSION:=4.6
本机代码包含两个文件夹级别。我为每个内部文件夹创建了一个Android.mk文件来编译和生成一个静态库。我正在最深的文件夹中使用std::map。Android.mk看起来像:

TEMP_PATH_REG := $(call my-dir)
LOCAL_PATH := $(TEMP_PATH_REG)
include $(call all-subdir-makefiles)
LOCAL_PATH := $(TEMP_PATH_REG)
include $(CLEAR_VARS)

LOCAL_MODULE            := registration
LOCAL_C_INCLUDES     := $(LOCAL_PATH)/../glm/
LOCAL_SRC_FILES        := registration_factory.cpp \
                                          inertial.cpp                                       
LOCAL_LDLIBS               := -llog -landroid -lEGL
LOCAL_STATIC_LIBRARIES     := android_native_app_glue
include $(BUILD_STATIC_LIBRARY)
$(call import-module,android/native_app_glue)
当我构建项目时,会出现以下错误:

~/.android-ndk-r8c/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld: ./obj/local/armeabi-v7a/libregistration.a(registration_factory.o): in function std::_Rb_tree<int, std::pair<int const, xmar::IRegistration*>, std::_Select1st<std::pair<int const, xmar::IRegistration*> >, std::less<int>, std::allocator<std::pair<int const, xmar::IRegistration*> > >::_M_insert_(std::_Rb_tree_node_base const*, std::_Rb_tree_node_base const*, std::pair<int const, xmar::IRegistration*> const&):~/.android-ndk-r8c/sources/cxx-stl/gnu-libstdc++/4.6/include/bits/stl_tree.h:1013: error: undefined reference to 'std::_Rb_tree_insert_and_rebalance(bool, std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node_base&)'
StaticLibrary  : libandroid_native_app_glue.a
rm -f obj/local/armeabi-v7a/libandroid_native_app_glue.a
~/.android-ndk-r8c/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld: ./obj/local/armeabi-v7a/libregistration.a(registration_factory.o): in function std::_Rb_tree_const_iterator<std::pair<int const, xmar::IRegistration*> >::operator--():~/.android-ndk-r8c/sources/cxx-stl/gnu-libstdc++/4.6/include/bits/stl_tree.h:284: error: undefined reference to 'std::_Rb_tree_decrement(std::_Rb_tree_node_base const*)'
~/.android-ndk-r8c/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86/bin/arm-linux-androideabi-ar crs ./obj/local/armeabi-v7a/libandroid_native_app_glue.a ./obj/local/armeabi-v7a/objs-debug/android_native_app_glue/android_native_app_glue.o
~/.android-ndk-r8c/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld: ./obj/local/armeabi-v7a/libregistration.a(registration_factory.o): in function std::_Rb_tree_const_iterator<std::pair<int const, xmar::IRegistration*> >::operator++():~/.android-ndk-r8c/sources/cxx-stl/gnu-libstdc++/4.6/include/bits/stl_tree.h:269: error: undefined reference to 'std::_Rb_tree_increment(std::_Rb_tree_node_base const*)'
Prebuilt       : libgnustl_static.a <= <NDK>/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi-v7a/
~/.android-ndk-r8c/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld: ./obj/local/armeabi-v7a/libregistration.a(registration_factory.o): in function std::_Rb_tree_iterator<std::pair<int const, xmar::IRegistration*> >::operator--():~/.android-ndk-r8c/sources/cxx-stl/gnu-libstdc++/4.6/include/bits/stl_tree.h:203: error: undefined reference to 'std::_Rb_tree_decrement(std::_Rb_tree_node_base*)'
~/.android-ndk-r8c/toolschains/arm-linux-androideabi-4.6/prebuilded/linux-x86/bin//lib/gcc/arm-linux-androideabi/4.6/../../../arm-linux-androideabi/bin/ld:/obj/local/armeabi-v7a/libregistration.a(registration\u factory.o):函数std:\u-Rb\u-tree:\u-insert\u(std:\u-Rb-tree:\u-insert\u-node\base-const*,std:\Rb:~/.android-ndk-r8c/sources/cxx stl/gnu libstdc++/4.6/include/bits/stl_tree.h:1013:错误:未定义对“std:”的引用:Rb_tree_insert_和再平衡(bool,std::_Rb_tree_node_base*,std:_Rb_tree_node_base*,std:_Rb_tree_node_base&)'
静态库:libandroid_native_app_glue.a
rm-f obj/local/armeabi-v7a/libandroid_native_app_glue.a
~/.android-ndk-r8c/toolschains/arm-linux-androideabi-4.6/prebuild/linux-x86/bin//lib/gcc/arm-linux-androideabi/4.6/../../../../../../arm-linux-androideabi/bin/ld:/obj/local/armeabi-v7a/libregistration.a(registration\u factory.o):函数std:\u Rb\u-tree\const\u迭代器::运算符--():~/.android-ndk-r8c/sources/cxx stl/gnu libstdc++/4.6/include/bits/stl_tree.h:284:错误:未定义对“std:_Rb_tree_decrement(std:_Rb_tree_node_base const*)”的引用
~/.android-ndk-r8c/toolschains/arm-linux-androideabi-4.6/prebuild/linux-x86/bin/arm-linux-androideabi-ar-crs./obj/local/armeabi-v7a/libandroid_native_app_glue.a./obj/local/armeabi-v7a/objs debug/android_native_app_glue/android_native_app_glue.o
~/.android-ndk-r8c/toolschains/arm-linux-androideabi-4.6/prebuild/linux-x86/bin//lib/gcc/arm-linux-androideabi/4.6/../../../../../../arm-linux-androideabi/bin/ld:./obj/local/armeabi-v7a/libregistration.a(registration\u factory.o):函数std:\u Rb\u-tree\const\u迭代器::operator++():~/.android-ndk-r8c/sources/cxx stl/gnu libstdc++/4.6/include/bits/stl_tree.h:269:错误:未定义对“std:_Rb_tree_increment(std:_Rb_tree_node_base const*)”的引用

预构建:libgnustl_static.a我找到了一个编译该项目的变通方法

LOCAL_LDLIBS += ~/.android-ndk-r8c/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi-v7a/libsupc++.a
LOCAL_LDLIBS += ~/.android-ndk-r8c/sources/cxx-stl/gnu-libstdc++/4.6/libs/armeabi-v7a/libgnustl_static.a