我想了解jni,所以我开始乱砍hellojni,我遇到了这个问题。
我的java代码如下所示:
short[] buf = new short[16];
Log.d("hello", "before!");
write(buf, 0, 16);
我的C代码如下:
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);
...
...
输出结果为:
阵列长度:1079082088
为什么数组长度如此之大?
答案 0 :(得分:4)
你能展示你的整个JNI文件吗?您没有在JNI函数中声明目标对象。通常参数是JNIEnv * env,jobject javaObject等。这意味着你认为jshortArray实际上是指向Java对象的指针,它可以解释你得到的奇怪结果。