我有一个Java类中的字节数组,我想将该字节数组传递给JNI C类。但我无法在JNI C中访问该数组,请帮忙解决。
我有一个Java类中的字节数组,我想将该字节数组传递给JNI C类。但我无法在JNI C中访问该数组,请帮忙解决。
您需要像这样在Java中声明接收数组的JNI函数:
private native void sendData(byte[] data);
您可以像调用其他函数一样调用该函数:
sendData(buffer);
然后在C代码中实现该功能,像这样:
JNIEXPORT void JNICALL Java_com_packageXXX_yourClass_sendData(JNIEnv* env, jobject thiz, jbyteArray data);
读取数组:
byte * cData = env->GetByteArrayElements(data, &isCopy);
并释放:
env->ReleaseByteArrayElements(data, cData, JNI_ABORT);
上述代码是C++。若要让其在C中工作,您需要将jni环境(env)作为您要调用的函数的第一个参数传递,像这样:
(*env)->GetByteArrayElements(env,...)