高分求助---jni如何处理java二维数组的传递问题。

解决方案 »

  1.   

    和其他的JIN处理没有什么特别的
    只是要看你的数组是由哪种基本类型组成的http://www.jcwcn.com/html/Java/10_43_37_489.htm
      

  2.   

    我也被这个问题难住了,哪位会的给讲一下,最好给出例子代码。
    比如一个//输入一个boolean二维数组
    java代码:
    //输入一个boolean二维数组
        public native void setArray(boolean[][] blList);
         boolean[][] blList = { {true, false},{true,true},{false,false} };
         myclass.setArray(blList);
    生成头文件代码:JNIEXPORT void JNICALL myclass_setArray
      (JNIEnv *, jobject, jobjectArray);二维数组boolean[][] 被转换为jobjectArray,
    C文件代码:
    JNIEXPORT void JNICALL Java_com_sundy_jnidemo_ChangeMethodFromJni_setArray
    (JNIEnv *env, jobject, jobjectArray ba)
    {   
        jobject  pba = (env)->GetObjectArrayElement (ba, 0 );    jsize len = (env)->GetArrayLength(ba);
        int i=0;
        for( i=0; i < len; i+=1 )
        {       
            printf( "boolean = %s\n", pba );
        }
    }
    问题就是怎么把jobjectArray 转换为一个二维的jbooleanArray
    或者把jobjectArray 中的元素(jobject  pba = (env)->GetObjectArrayElement (ba, 0 );)
    转换为一个一维的jbooleanArray
    http://www.iplab.cs.tsukuba.ac.jp/~liuxj/jdk1.2/zh/docs/guide/jni/spec/functions.doc.html#17314
    这里边根本没有二维数组的概念,也没有相互转化的方法
    救命啊!!
      

  3.   

    我也被这个问题难住了,哪位会的给讲一下,最好给出例子代码。
    比如一个//输入一个boolean二维数组
    java代码:
    //输入一个boolean二维数组
        public native void setArray(boolean[][] blList);
         boolean[][] blList = { {true, false},{true,true},{false,false} };
         myclass.setArray(blList);
    生成头文件代码:JNIEXPORT void JNICALL myclass_setArray
      (JNIEnv *, jobject, jobjectArray);二维数组boolean[][] 被转换为jobjectArray,
    C文件代码:
    JNIEXPORT void JNICALL Java_com_sundy_jnidemo_ChangeMethodFromJni_setArray
    (JNIEnv *env, jobject, jobjectArray ba)
    {   
        jobject  pba = (env)->GetObjectArrayElement (ba, 0 );    jsize len = (env)->GetArrayLength(ba);
        int i=0;
        for( i=0; i < len; i+=1 )
        {       
            printf( "boolean = %s\n", pba );
        }
    }
    问题就是怎么把jobjectArray 转换为一个二维的jbooleanArray
    或者把jobjectArray 中的元素(jobject  pba = (env)->GetObjectArrayElement (ba, 0 );)
    转换为一个一维的jbooleanArray
    http://www.iplab.cs.tsukuba.ac.jp/~liuxj/jdk1.2/zh/docs/guide/jni/spec/functions.doc.html#17314
    这里边根本没有二维数组的概念,也没有相互转化的方法
    救命啊!!
      

  4.   

    我也被这个问题难住了,哪位会的给讲一下,最好给出例子代码。
    比如一个//输入一个boolean二维数组
    java代码:
    //输入一个boolean二维数组
        public native void setArray(boolean[][] blList);
         boolean[][] blList = { {true, false},{true,true},{false,false} };
         myclass.setArray(blList);
    生成头文件代码:JNIEXPORT void JNICALL myclass_setArray
      (JNIEnv *, jobject, jobjectArray);二维数组boolean[][] 被转换为jobjectArray,
    C文件代码:
    JNIEXPORT void JNICALL Java_com_sundy_jnidemo_ChangeMethodFromJni_setArray
    (JNIEnv *env, jobject, jobjectArray ba)
    {   
        jobject  pba = (env)->GetObjectArrayElement (ba, 0 );    jsize len = (env)->GetArrayLength(ba);
        int i=0;
        for( i=0; i < len; i+=1 )
        {       
            printf( "boolean = %s\n", pba );
        }
    }
      

  5.   

    JAVA中没有二级指针的概念,JNI也没提供相应的操作函数.强制转换过程会发生错误.
      

  6.   

    JAVA中没有二级指针的概念,JNI也没提供相应的操作函数.强制转换过程会发生错误.哪该怎么办?