windows JNI返回结构体数组问题
以下是我JNI的C语言源代码,函数返回一个长度为3的对象数组,我在网上找了好多帖子,都是这样写的,但是在Java下测试的时候,返回的对象数组中3个对象是一样的,这是为什么啊??另外我试了将对象数组一下0填充到2、或者从2填充到0,3个对象数组中都是最后一次填充进去的内容,求解?再问一下,我这样返回一个对象数组程序上是否有错?麻烦大侠指点指点!!!!
JNIEXPORT jobjectArray JNICALL Java_com_bx_pts_comm_can_CANJNI_ReceiveArray(JNIEnv *env, jclass obj, jint jDevType, jint jDevIndex, jint jCANIndex)
{
jobjectArray recvData;
BYTE data[8] = {0};
jsize len = 3;
jclass objClass = (*env).FindClass("java/lang/Object");
recvData = (*env).NewObjectArray(len,objClass,NULL);
jclass objectClass = (*env).FindClass(DataPath);
jfieldID fID = (*env).GetFieldID(objectClass,"ID","I");
jfieldID fData = (*env).GetFieldID(objectClass,"Data","[B");
for (int i = len -1;i >= 0;i--)
{
jbyte* cData = (jbyte*)TestData2[i];
jbyteArray jaData = (*env).NewByteArray((jsize)DataLength);
(*env).SetByteArrayRegion(jaData,0,(jsize)DataLength,cData);
(*env).SetObjectField(obj,fData,jaData);
(*env).SetIntField(obj,fID,(jint)(0x12345671 + i));
(*env).SetObjectArrayElement(recvData,(jsize)i,obj);
(*env).DeleteLocalRef(jaData);
}
return recvData;
} Windows JNI Structure --------------------编程问答--------------------
补充:Java , Java相关