Actualmente estoy implementando una función de Android con el ndk. declaré la función en java comoObteniendo 'Señal fatal 11 (SIGSEGV) en 0x00000010 (código = 1)' al escribir en la matriz jfloat
public static native void calculate(float[] rgb,float factor);
Entonces, escribí la función C:
JNIEXPORT void JNICALL Java_<package>_calculate(
JNIEnv * env,
jobject object,
jfloatArray rgbObject,
jfloat factor){
jfloat* rgb = (*env)->GetFloatArrayElements(env,rgbObject,0);
if(rgb==NULL) return;
rgb[0]=5; // Test, crash!
(*env)->ReleaseFloatArrayElements(env,rgb,rgbObject,0);
}
Sin embargo, cada vez que intenta llamar a la función con una matriz y un valor consigo el mensaje Logcat :
a/libc (16064): la señal de Fatal 11 (SIGSEGV) en 0x00000010 (código = 1)
af luego de eso, la aplicación falla. Descubrí que siempre ocurre cuando escribo en los valores float. La lectura no conduce a un crash.
¿Hay algún problema? ¿No es posible escribir los valores de la matriz?
¡Bien, has encontrado la solución! :) Debes establecer tu respuesta como aceptada para que otras personas puedan encontrar útil esta publicación. –
Lo sé, pero Stackoverflow dice que debería esperar al menos 2 días, por lo que no puedo configurarlo en este momento;) – TSGames