J'essaie de comprendre jni, alors j'ai commencé à pirater hellojni, et j'ai rencontré ce problème.getArrayLength() renvoie un nombre énorme ...
Mon code java ressemble à ceci:
short[] buf = new short[16];
Log.d("hello", "before!");
write(buf, 0, 16);
et mon code C ressemble à ceci:
jint
Java_com_example_hellojni_HelloJni_write(JNIEnv* env, jshortArray buf, jint off, jint len)
{
char debug[1024];
int ii = 0;
jsize cbuflen = (*env)->GetArrayLength(env, buf);
sprintf(debug, "array length: %d", cbuflen);
LOGD(debug);
...
...
La sortie est:
longueur du tableau: 1079082088
Pourquoi la longueur du tableau est-elle si grande?
c'est bizarre, même en passant un entier simple ne fonctionne pas! que se passe t-il ici!!! – user645402
Est-ce vraiment votre fonction entière, ou est-ce qu'il manque quelque chose? – EboMike