如何将C ++ 11集成到Android中?
答案 0 :(得分:68)
这里的主要答案似乎包括对C ++ 11的实验性支持,而C ++ 11不再是实验性的。
如果你正在使用命令行NDK支持(我使用IDEA社区版13来获取Java的东西),那么我必须在我的jni/Application.mk
中使用API来获得C ++ 11支持(在OSX ML上):
NDK_TOOLCHAIN_VERSION := 4.8
# APP_STL := stlport_shared --> does not seem to contain C++11 features
APP_STL := gnustl_shared
# Enable c++11 extentions in source code
APP_CPPFLAGS += -std=c++11
答案 1 :(得分:36)
首先,您需要确保您的工具链是“Cross GCC”。虽然它是我Linux上的默认设置,但它不在我的MacOSX Lion上。
要执行此操作,请转到项目属性> C / C ++ Build>工具链编辑器。 “当前工具链”应设置为“ Cross GCC ”。您可能需要取消选中“仅显示兼容的工具链”框。
然后,在 Android.mk 中为LOCAL_CFLAGS添加一个选项:
LOCAL_CFLAGS := -std=gnu++11
我们现在需要告知Eclipse在哪里可以找到相应的新符号(例如“std :: unordered_map”)。转到右键单击“jni”>属性> C / C ++一般 - >路径和符号 - >符号 - > GNU C ++ ,并添加以下符号(单击“添加...”):
Name: __GXX_EXPERIMENTAL_CXX0X__
Value:
(即让“值”为空)
答案 2 :(得分:7)
如果您使用gradle-experimental-plugin,还可以在 build.gradle 文件中进行设置:
android.ndk {
moduleName = "hello-android-jni"
stl = "stlport_shared"
cppFlags.add("-std=c++11")
}
答案 3 :(得分:1)
使用最新的gradle-experimental-plugin 0.8.0-alpha4添加到 app / build.gradle :
model {
android {
ndk {
moduleName "native"
CFlags.add("-std=c11") // Enable C11 support
ldLibs.add("log")
}
}
}