使用GNU STL和C++;11在Android NDK上安装V8

使用GNU STL和C++;11在Android NDK上安装V8,android,c++,c++11,android-ndk,v8,Android,C++,C++11,Android Ndk,V8,我正在使用NDK和V8在Android上构建一个应用程序。我更愿意使用C++11和GNU STL来实现诸如shared_ptr之类的功能;然而,V8构建系统似乎是硬编码的,使用stlport\u static作为其STL变体 即使在这种情况下,V8的构建也不会将STLport静态链接到其.a文件中(这是意料之中的),因此,我从libv8_base.a等中的未解析符号中得到数百个链接器错误。我也看不到任何方法来指示ndk build当我使用不同的STL变体时,它应该链接到stlport_stati

我正在使用NDK和V8在Android上构建一个应用程序。我更愿意使用C++11和GNU STL来实现诸如
shared_ptr
之类的功能;然而,V8构建系统似乎是硬编码的,使用
stlport\u static
作为其STL变体

即使在这种情况下,V8的构建也不会将STLport静态链接到其.a文件中(这是意料之中的),因此,我从
libv8_base.a
等中的未解析符号中得到数百个链接器错误。我也看不到任何方法来指示
ndk build
当我使用不同的STL变体时,它应该链接到
stlport_static


当使用
gnustl\u static
时,是否有一种合理的模式来链接
stlport\u static
,或者,更好的是,是否有一种方法可以针对
gnustl\u static
构建Android V8?

您有一个问题。好吧,把不同的STL混合在不同的容器里。所以,在特别小心的情况下,是可能的;但是在一个STL中使用两个STL是不可能的

您或者需要实现自己的
共享\u ptr
(没什么大不了的),但是对于gnustl而不是stlport中存在的所有其他特性,您将面临相同的问题


或者您需要将V8移植到gnustl(我恐怕麻省理工学院的许可证不允许这样做)。

您的本机代码是直接与
libjv8.so
对话,还是与它的静态libs对话?或者您的Java加载两个独立的共享库?我的本机代码与
libv8_base.a
,以及
libv8_base.a
取决于
stlport_静态
库。我可以自己使用
stlport\u static
但是我真的想要
共享的ptr
和适当的移动语义在我的容器中。。。在任何情况下,我都不会构建v8的
.so
,因为这似乎不是一个选项。现在在AOSP错误跟踪器中打开:。看起来gnustl和stlport对它们的所有实现类都使用不同的内部符号,所以我看不出是什么让它们在一个.so不可能混合。但是MIT许可证和/或修改的GPL中有什么禁止V8在gnustl中链接?这就是V8仅支持stlport的原因吗?不管怎么说,看起来只需拉入
boost::shared_ptr
会更容易,我本来希望避免这样做的,但很好。