我正在尝试将RenderScript集成到我公司的C ++应用程序中。但是,在尝试包含libRScpp_static.a
external/stlport/stlport/stl/_alloc.h:158: error: undefined reference to 'std::__node_alloc::_M_allocate(unsigned int&)'
external/stlport/stlport/stl/_alloc.h:161: error: undefined reference to 'std::__node_alloc::_M_deallocate(void*, unsigned int)'
external/stlport/stlport/stl/_string.c:600: error: undefined reference to 'std::__stl_throw_length_error(char const*)'
external/stlport/stlport/stl/_vector.c:41: error: undefined reference to 'std::__stl_throw_length_error(char const*)'
external/stlport/stlport/stl/_alloc.h:158: error: undefined reference to 'std::__node_alloc::_M_allocate(unsigned int&)'
external/stlport/stlport/stl/_string.c:600: error: undefined reference to 'std::__stl_throw_length_error(char const*)'
由于我们的应用程序在libRScpp_static.a
时使用Gnu STL
compiled against STLport,
我认为这是因为这些STL实现之间的二进制不兼容。
如何将RenderScript与Gnu STL一起使用?
NB:切换到STLport是不可能的。
更新:链接动态库(libRScpp.so
)似乎可以解决问题。我不确定为什么,如果可能,我们宁愿静态链接。
更新: libRScpp.so
已在NDK r9d中删除。我已经尝试编译自己的共享库,它与STLport
静态链接,并且不显示STL / RenderScript符号。