如果 Android NDK 应用程序加载多个共享的 C++ STL 实现,会有什么行为?

What is the behavior if an Android NDK application loads more than one shared C++ STL implementation?

我们有一个带有多个本机库的 Android 应用程序。目前,他们中的大多数使用 stlport_shared,但我们有兴趣升级到 c++_shared(LLVM libc++ 运行 时代)。如果我们要升级其中的一些,而不是其他的,我们将不得不同时加载 stlport 和 llvm。

我认为加载 STL 的两个实现可能会导致问题,但实际上该应用程序似乎 运行 正确。这是未定义的行为,还是允许加载多个 STL 实现?

我已经阅读了 https://developer.android.com/ndk/guides/cpp-support.html 和 NDK 附带的一些文档,但似乎无法找到明确的答案。感谢您的帮助!

最好尽可能避免这种情况。

如果一个 STL 类型(例如 std::string)被 stlport_shared 二进制文件和 c++_static 二进制文件访问,作为 [=10= 的两个实现] 不兼容,这将不起作用。

您也容易受到

描述的问题的影响