Android NDK y C + + STL
Al compilar mi C + + para un proyecto iOS, todo procede bien. Sin embargo, estoy encontrando dificultades en Android.
Mi Application.mk dice:
- JNI se bloquea cuando se llama con un argumento String
- ¿Cómo obtener los mensajes "printf" escritos en la aplicación NDK?
- Cambiar Actividad con JNI Llamar o usar Openfeint provoca App-Crash
- Macro de preprocesador en Android.mk se ignora, pero funciona en Application.mk
- JNI se bloquea al llamar a CallVoidMethod
APP_ABI := armeabi armeabi-v7a APP_PLATFORM := android-11 APP_STL := stlport_shared
Todos los LOCAL_SRC_FILES están definidos.
Cuando intento construir mi módulo consigo el error siguiente del compilador:
jni/Game.hpp: In member function 'const std::pair<pos, Obj*>* MyEnumerator::next()': jni/Game.hpp:126:23: error: expected type-specifier jni/Game.hpp:126:23: error: cannot convert 'int*' to 'std::pair<pos, Obj*>*' in assignment jni/Game.hpp:126:23: error: expected ';'
La línea de código mencionada anteriormente dice:
this->ptr = new pair<pos, Obj*>::pair(it->first, it->second);
Aquí, ptr
es de tipo pair<pos, Obj*>*
y pos
es una estructura. He declarado using std::pair;
.
¿Algún consejo sobre lo que está mal, y qué probar?
- Cómo llamar a función Java desde c
- Mejor opción para representar video para iOS y Android
- ByteBuffer no libera memoria
- Integración de jpct-ae con el motor Vuforia de Qualcomm en android
- Casting un tipo largo de C ++ a un jlong de JNI
- Biblioteca binaria preconfigurada nativa en Android Studio con el complemento experimental de Gradle
- No se invoca el método Java cuando se llama desde pthread nativo
- JNI ERROR (bug de la aplicación): desbordamiento de la tabla de referencia local (máx = 512)
Trate de cambiar la línea para leer:
this->ptr = new std::pair<pos, Obj*>(it->first, it->second);
También IMHO, perder las directivas de uso y utilizar nombres totalmente calificados. Es limpio, preciso y no permite nombrar colisiones. Si debe usarlos, no los use en archivos de encabezado, solo en los archivos de implementación.
- ¿Es necesario mantener las clases del mismo paquete en el mismo dex mientras se utilizan múltiples archivos dex
- ¿StringBuilder.toString conserva la cadena construida?