Habilitar la compatibilidad con C ++ 11 en Android
¿Cómo puedo integrar C ++ 11 en Android?
- C ++ 11 funciones cmath no en el espacio de nombres std para android NDK w / gcc-4.8 o clang 3.4
- ¿Cuál es la diferencia en GCC entre -std = gnu ++ 0x y -std = c ++ 0x y cuál debe ser utilizado?
- Error: 'to_string' no es un miembro de 'std'
- ¿Cómo usar std :: stoul y std :: stoull en Android?
- C ++ 11 std :: async en Android NDK no funciona
- Obtener Android NDK r9d para tener C + + 11 de apoyo
- Cómo utilizar unordered_map en Android?
- Cómo construir impulso para android como biblioteca compartida con c + + 11 de apoyo
- Android NDK r9b y compilación de C ++ 11
- Excluir etiquetas HTML y algunos caracteres UNICODE mientras busca en SQLite
- Compilación de C + + 11 fuentes para Android NDK
- Cómo utilizar std :: this_thread :: yield () deterministically?
- Construir android con clang en lugar de gcc? Y el clang stl lib en lugar de gnustl lib?
Parece que la respuesta principal aquí incluye soporte experimental para C ++ 11, y C ++ 11 ya no es experimental.
Si usted está usando la línea de comandos NDK apoyo (yo uso IDEA comunidad edición 13 para el material de Java), entonces esto es lo que tuve que poner en mi jni/Application.mk
para obtener C + + 11 soporte con API 19 (en 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
Derivado de aquí y aquí .
En primer lugar, tendrá que asegurarse de que su cadena de herramientas es "Cross GCC". Aunque era el predeterminado en mi Linux, no estaba en mi MacOSX Lion.
Para ello, vaya a Propiedades del proyecto> C / C ++ Build> Editor de cadena de herramientas . La " cadena de herramientas actual " debe establecerse en " Cruzar GCC ". Es posible que deba desmarcar la casilla " Mostrar sólo toolchains compatibles ".
A continuación, agregue una opción a LOCAL_CFLAGS en Android.mk :
LOCAL_CFLAGS := -std=gnu++11
Ahora necesitamos informar a Eclipse sobre dónde encontrar los nuevos símbolos correspondientes (por ejemplo, "std :: unordered_map"). Haga clic con el botón derecho del ratón en "jni"> Propiedades> C / C ++ General -> Rutas y símbolos -> Símbolos -> GNU C ++ y agregue el siguiente símbolo (haciendo clic en "Agregar …"):
Name: __GXX_EXPERIMENTAL_CXX0X__ Value:
(Es decir, deje "Valor" vacío)
También puede establecer esto en su archivo build.gradle si está utilizando el gradle-experimental-plugin :
android.ndk { moduleName = "hello-android-jni" stl = "stlport_shared" cppFlags.add("-std=c++11") }
Con el último gradle-experimental-plugin 0.8.0-alpha4 agrega a tu app / build.gradle :
model { android { ndk { moduleName "native" CFlags.add("-std=c11") // Enable C11 support ldLibs.add("log") } } }