Attualmente sto implementando una funzione Android con il ndk. ho dichiarato la funzione in java comeOttenere "Segnale fatale 11 (SIGSEGV) a 0x00000010 (codice = 1)" durante la scrittura nell'array jfloat
public static native void calculate(float[] rgb,float factor);
Poi, ho scritto la funzione 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);
}
Tuttavia, ogni volta che provo a chiamare la funzione con un array e un certo valore ottengo il messaggio logcat :
a/libc (16064): segnale irreversibile 11 (SIGSEGV) a 0x00000010 (codice = 1)
af In questo caso, l'app si arresta in modo anomalo. Ho capito che si verifica sempre quando si scrive nei valori float. La lettura non porta a un incidente.
Ho qualcosa che non va? Non è possibile scrivere i valori dell'array?
Bene hai trovato la soluzione! :) Dovresti impostare la tua risposta come accettata in modo che altre persone possano trovare utile questo post. –
Lo so, ma Stackoverflow dice che dovrei aspettare almeno 2 giorni, quindi non posso impostarlo adesso;) – TSGames