我有一个使用JNI的C实现方法,应返回byte[][]
类型的结果。
我的代码如下:
jobjectArray result = java_env->NewObjectArray(num_byte_arrays, jbyteArray, NULL);
for (int i = 0 ; i < num_byte_arrays ; i++) {
java_env->SetObjectArrayElement(result, i, java_env->NewByteArray(3));
}
我收到以下编译错误:
error: expected primary-expression before ',' token
jobjectArray result = java_env->NewObjectArray(num_patches, jbyteArray, NULL);
^
我想我NewObjectArray
的第二个参数,即jbyteArray
,对于创建byte[][]
数组不正确。
任何想法我应该如何指定对象数组的类型是byte[]
?
答案 0 :(得分:0)
以下列方式解决它(某种解决方法):
jobjectArray result = NULL;
for (int i = 0 ; i < num_byte_arrays ; i++) {
jbyteArray byte_array = java_env->NewByteArray(3);
if (i == 0) {
result = java_env->NewObjectArray(num_byte_arrays, java_env->GetObjectClass(byte_array), NULL);
}
java_env->SetObjectArrayElement(result, i, byte_array);
}
我所做的是,只有当第一个byte[]
对象已经准备好时才创建对象数组。在第一个GetObjectClass
对象上运行JNI方法byte[]
,我可以为NewObjectArray
指定所需的jobject
参数。
不确定以其他方式可以为您提供代表jobject
的{{1}}项。