背景
我正在使用 JNI 中的字节数组。而且我无法获得 jojibArray 的长度。我正在 Windows 7 中的 eclipse 中编写代码。
Java代码:
private native int Enroll( byte[] pSeed );
JNI代码:在JNI中,我有一个具有两个成员
unsigned long length
和unsigned char data[1]
的结构typedef struct blobData_s {
unsigned long length;
unsigned char data[1];
} blobData_t;
现在,当我的JNI函数作为参数jbyteArray jpSeed
获取时,我想获取jpSeed
的长度并将其设置为struct的length成员。JNIEXPORT jint JNICALL Java_com_Test_Enroll( JNIEnv* env, jobject thiz, jbyteArray jpSeed ){
blobData_t* bd = malloc( sizeof(blobData_t) );
bd->length = **Question 1**
bd->data[1] = jbyteArray;
}
问题1:如何在JNI中获取
jpSeed
的长度? 问题2:此代码可以正确使用
bd.data[1] = jbyteArray;
吗? 最佳答案
GetArrayLength(JNIEnv* env, jbyteArray array)
阅读 here。 jpSeed
中bd.data[1]
的内容。无论如何,应该使用
GetByteArrayElements(...).