android - 在 Android NDK 上将 GNU STL 和 C++11 与 V8 结合使用

标签 android c++ c++11 android-ndk v8

我正在使用 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/

相关文章:

java - 在android中允许使用输入过滤器编辑文本的特定字符

c++ - sizeof 操作数得到评估?

c++ - 在类初始化和初始化列表中

c++ - XCode 构建失败 "undefined Symbols for architecture x86_64"

c++ - 引用一个可能被破坏的静态对象

C++ Lambdas : capture list vs. 参数列表

javascript - ngCordova 无法识别相机、手电筒或 Android 手机的其他部分

android - 如何在android中手动引入虚拟键盘?当我们点击编辑文本框时,键盘要显示?

android - Froyo 如何在主屏幕上显示对话框?

c++ - mac 中的段错误,但不是其他在线编译器