如何为Android Studio启用C++ 11?

ang*_*vad 12 c++ android c++11 android-studio

我正在使用Android studio 1.3.2 + ndk-r11b-windows-x86_64并尝试使用本机代码和C++ 11功能(share_ptr,weak_ptr等)构建项目,但是出现了一些错误.例如:

错误:(22,6)错误:命名空间'std'中的'shared_ptr'未命名模板类型

问题是:如何在Android Studio + NDK中使用C++ 11?

ps我cppFlags.add ("-std=c++11")在"build.gradle"中添加了标志

 android.ndk {
        moduleName = "game"
        cppFlags.addAll(["-I${file("src/main/jni/native_app_glue")}".toString(),
                         "-I${file("src/main/jni")}".toString(),
                         "-I${file("src/main/jni/data")}".toString()])
        cppFlags.add ("-std=c++11")
        ldLibs.addAll(["android", "EGL", "GLESv2", "OpenSLES", "log"])
        stl        = "stlport_static"
}
Run Code Online (Sandbox Code Playgroud)

但它似乎没有用.

小智 12

在App的build.gradle文件中我转到android - > defaultConfig - > externalNativeBuild - > cmake我从这里编辑cppFlags参数

cppFlags ""
Run Code Online (Sandbox Code Playgroud)

对此

cppFlags "-std=c++11"
Run Code Online (Sandbox Code Playgroud)

  • 我通过`set(CMAKE_CXX_STANDARD 14)`在CMake中启用C++ 14.我想知道为什么这个选项在通过Gradle调用CMake时没有效果?当我在Gradle之外生成时,它工作正常.好像Gradle正在拉扯一些恶作剧. (2认同)