使用GNU STL和C++;11在Android NDK上安装V8
我正在使用NDK和V8在Android上构建一个应用程序。我更愿意使用C++11和GNU STL来实现诸如使用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
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
会更容易,我本来希望避免这样做的,但很好。