当前位置:编程学习 > JAVA >>

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相关
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,