【发布时间】:2012-03-02 20:20:24
【问题描述】:
在添加同事的一组代码后,我得到了这个输出:
./obj/local/armeabi/objs/jniWrapper/native.o: In function `_Vector_base':
D:/opt/android-ndk/sources/cxx-stl/stlport/stlport/stl/_vector.h:73: undefined reference to `__cxa_end_cleanup'
./obj/local/armeabi/objs/jniWrapper/native.o:(.ARM.extab.text._ZNSt6vectorIhSaIhEEC1ERKS1_[std::vector<unsigned char, std::allocator<unsigned char> >::vector(std::vector<unsigned char, std::allocator<unsigned char> > const&)]+0x0): undefined reference to `__gxx_personality_v0'
./obj/local/armeabi/objs/jniWrapper/native.o: In function `std::__node_alloc::deallocate(void*, unsigned int)':
D:/opt/android-ndk/sources/cxx-stl/stlport/stlport/stl/_alloc.h:161: undefined reference to `__cxa_end_cleanup'
./obj/local/armeabi/objs/jniWrapper/native.o:(.ARM.extab.text._ZNSt4priv12_String_baseIcSaIcEED2Ev[std::priv::_String_base<char, std::allocator<char> >::~_String_base()]+0x0): undefined reference to `__gxx_personality_v0'
./obj/local/armeabi/objs/jniWrapper/native.o: In function `basic_string':
D:/opt/android-ndk/sources/cxx-stl/stlport/stlport/stl/_string.c:643: undefined reference to `__cxa_end_cleanup'
这是因为我无法访问正确的 STL。
据我所知,我只能从APP_STL := stlport_static 在Application.mk 中设置的三个(stlport_static、stlport_shared、system)中进行选择。
NDK 是否有其他库可用?
【问题讨论】:
-
_cxa*** 给我的印象是 GNU 特有的。您确定没有意外包含非 NDK 标头(例如来自 /usr/include)吗?
-
a) “Possible Duplicate of”链接比这个问题早 10 个月。 b)问题不是一个真正的问题,而是一个关于常见链接/编译问题的教程。 c) 链接没有回答这个问题,因为这个问题特别是是一个 Android NDK 问题而不是一般的 C++ 链接问题。
-
@Graeme:这与 Android 有什么关系,或者为什么与规范有多大关系,这超出了我的范围。事实是您缺乏有关 C/C++ 的基础知识,尤其是链接。这确实在规范答案中得到了解释。如果您有 C++ 和 Android 问题,请在单独的问题中提出,在这种情况下,它甚至过于宽泛。
-
@FinalContest - 我不是链接它是真的专家。但并不是我不了解链接,而是我不知道 Android 设备上有哪些库可用。您将知道使用 NDK 指定 STL 与使用命令行编译器不同。您可能还会注意到,我的回答中没有任何信息在链接的问题中可用。
-
@Graeme:正如我已经写过的那样,您的问题当时过于宽泛和/或不清楚。这意味着您仍然需要改进您的问题,使其成为 Stack Overflow 上的有效问题。你不能问关于链接和 Android,谁知道还有什么。它们本身就是不同的主题。你需要一些最基本的了解。此外,这不仅宽泛且不明确,而且从定义上来说也是题外话:
Is there another library available to the NDK?请参考帮助中心如何提出一个好问题。
标签: android compiler-errors android-ndk linker-errors