14

I'm using Android studio 1.3.2+ndk-r11b-windows-x86_64 and try to build project with native code and C++11 features (share_ptr, weak_ptr and etc.) but got some errors. For example:

Error:(22, 6) error: 'shared_ptr' in namespace 'std' does not name a template type

The issue is: how to use C++11 with Android Studio+NDK?

p.s. I added flag cppFlags.add ("-std=c++11") into "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"
}

but it's seems didn't work.

angevad
  • 187
  • 1
  • 1
  • 14

1 Answers1

14

On build.gradle file of the App I go to android -> defaultConfig -> externalNativeBuild -> cmake and I edit the cppFlags parameter from this

cppFlags ""

to this

cppFlags "-std=c++11"
Francesco
  • 151
  • 1
  • 5
  • The OP mentions he's using Android Studio 1.3.2. Using cmake is possible only since Android Studio 2.2 -- released mid September 2016. – Sidelobe Oct 11 '16 at 12:05
  • 2
    I enable C++14 in CMake via `set( CMAKE_CXX_STANDARD 14 )`. I wonder why this option has no effect when CMake is invoked through Gradle? It works fine when I generate outside of Gradle. Seems like Gradle is pulling some shenanigans. – void.pointer Oct 25 '16 at 13:21