我正在使用 NDK 和 V8 在 Android 上构建应用程序。我更愿意使用 C++11 和 GNU STL 来实现 shared_ptr
等功能;然而,V8 构建系统似乎被硬编码为使用 stlport_static
作为其 STL 变体。
即使 patching the build system to generate a fully self-contained library ,V8 的构建不会将 STLport 静态链接到它的 .a 文件中(这是可以预料的),因此我从 libv8_base.a
中的未解析符号中得到了数百个链接器错误。等。我也没有看到任何方式来指示 ndk-build
它应该链接到stlport_static
当我使用不同的 STL 变体时。
stlport_static
中是否有合理的链接模式?使用 gnustl_static
时,或者更好的是,有没有一种方法可以针对 gnustl_static
构建 Android V8相反?
最佳答案
你有问题。好吧,在单独的 .so 中混合不同的 STL 是可能的,但要格外小心;但是在一个 .so 中使用两个 STL 是根本不可能的。
您要么需要实现自己的 shared_ptr
(没什么大不了的),但是对于存在于 gnuSTL 而不是STLport。
或者您需要将 V8 移植到 gnuSTL(恐怕 MIT 许可证不允许这样做)。
关于android - 在 Android NDK 上将 GNU STL 和 C++11 与 V8 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27139654/