Android 安卓NDK C++;stlport
目前我通过gnustl使用NDK-r10c和C++11支持。不幸的是,我们的项目需要切换到stlport。从gnustl更改为stlport时,编译过程中会出现许多错误。下面是Application.mk文件Android 安卓NDK C++;stlport,android,c++11,android-ndk,Android,C++11,Android Ndk,目前我通过gnustl使用NDK-r10c和C++11支持。不幸的是,我们的项目需要切换到stlport。从gnustl更改为stlport时,编译过程中会出现许多错误。下面是Application.mk文件 APP_PLATFORM := android-18 NDK_TOOLCHAIN_VERSION := 4.8 APP_ABI := armeabi-v7a APP_STL := stlport
APP_PLATFORM := android-18
NDK_TOOLCHAIN_VERSION := 4.8
APP_ABI := armeabi-v7a
APP_STL := stlport_static
# APP_STL := gnustl_static
APP_CPPFLAGS := -std=c++11
ifeq ($(NDK_DEBUG),1)
APP_OPTIM := debug
else
APP_OPTIM := release
endif
似乎C++11功能不可用:
-向量上的cbegin(),cend()
-向量上的数据(),
-无法从cbegin()等推断自动。要使用stlport,您需要在Android.mk中添加这些行
# Need this line to allow use alloc on stl containers
LOCAL_CFLAGS := -D_STLP_USE_NEWALLOC
# c++11 support
LOCAL_CPPFLAGS += -std=c++11
# for stl port
LOCAL_LDLIBS += -lstdc++
# include stl headers
LOCAL_C_INCLUDES += ${NDK_ROOT}/sources/cxx-stl/stlport/stlport
STLport太旧了,根本不支持C++11 像-std=c++11这样的标志只会影响编译器,而不一定影响STL实现
您必须使用gnustl或libc++gnustl有什么问题吗?我这样问是因为默认情况下我已经使用它一段时间了,但可能我遗漏了一些东西。我一直在使用gnustl,但stlport是客户的一项要求。@AlexCohn-许多公司不想要GPL的组件,因为它会造成法律问题。当我做自由职业者的时候,我经常不得不签署没有GPL条款的合同。我甚至知道有些公司的政策明确禁止检查GPL代码,即使在错误报告中也是如此。现在在AOSP错误跟踪器中打开:。@jww gnustl尽管名称不同,但它不是GPL,而是。Alex,问题仍然和以前一样:错误:“move”不是“std”的成员,错误:“排序”未在此字段中声明scope@Alex-STLport也缺少
,
,等等。如何在Android上使用libc++?我不认为clang支持是应用程序STL的选项之一。