Android上启用c++ 11支持

Enable C++11 support on Android

本文关键字:11支持 c++ 启用 Android      更新时间:2023-10-16

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

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

如果你使用命令行NDK支持(我使用IDEA社区版13 Java的东西),那么这是我必须放在我的jni/Application.mk以获得API 19的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

源自这里和这里

首先,您需要确保您的工具链是"Cross GCC"。虽然这是我的Linux上的默认设置,但在我的MacOSX Lion上不是。

为了做到这一点,转到项目属性> C/c++构建>工具链编辑器。"当前工具链"应该设置为"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:

(即。

您也可以在构建中设置它。gradle文件,如果你使用gradle-experimental-plugin:

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

使用最新的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")
        }
    }
}