背景
我正在使用 JNI 中的字节数组。而且我无法获得 jojibArray 长度。我正在 Windows 7 中的 eclipse 中编写代码。
Java代码:

private native int Enroll( byte[] pSeed );
JNI代码:
在JNI中,我有一个具有两个成员unsigned long lengthunsigned 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
  • 不确定您要做什么,我假设您想要jpSeedbd.data[1]的内容。
    无论如何,应该使用GetByteArrayElements(...).
  • 完成访问字节数组的内容

    10-07 13:58