在 Android 上启用 C + + 11支持

如何将 C + + 11集成到 Android 中?

44205 次浏览

首先,您需要确保您的工具链是“ CrossGCC”。虽然它是我的 Linux 的默认设置,但它不在我的 MacOSX Lion 上。

为了做到这一点,转到 Project Properties > C/C + + Build > Tool Chain Editor 项目属性 > C/C + + Build > 工具链编辑器。“ 当前的工具链”应设定为“ 跨海湾合作委员会”。您可能需要取消选中“ 仅显示兼容的工具链”框。

然后,在 机器人中向 LOCAL _ CFLAGS 添加一个选项:

LOCAL_CFLAGS := -std=gnu++11

现在我们需要告诉 Eclipse 在哪里可以找到相应的新符号(例如“ std: : unorder _ map”)。转到 右击“ jni”> 属性 > C/C + + General-> Path and Symbols-> Symbols-> GNU C + + ,并添加以下符号(通过单击“添加...”) :

Name: __GXX_EXPERIMENTAL_CXX0X__
Value:

(即让“ Value”为空)

这里的主要答案似乎包括对 C + + 11的实验性支持,而 C + + 11已经不再是实验性的了。

如果你使用命令行 NDK 支持(我使用的是 IDEA 社区版本13的 Java 内容) ,那么这就是我在我的 jni/Application.mk中使用 API 19(在 OSX ML 上)获得 C + + 11支持的内容:

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

来源于 给你给你

如果您使用的是 Gradle-实验-插件,您也可以在 建造,分级文件中设置:

android.ndk {
moduleName = "hello-android-jni"
stl = "stlport_shared"
cppFlags.add("-std=c++11")
}

使用最新的 Gradle-实验-插件0.8.0-alpha4添加到您的 App/build.gradle:

model {
android {
ndk {
moduleName "native"
CFlags.add("-std=c11") // Enable C11 support
ldLibs.add("log")
}
}
}