Java C-JNI将2D int数组作为JobjectArray返回

Java C-JNI将2D int数组作为JobjectArray返回,java,c,java-native-interface,multidimensional-array,Java,C,Java Native Interface,Multidimensional Array,所以我决定将dll导入到我的java代码中 它所做的是计算邻居矩阵。问题是我不知道如何将矩阵作为jobjectArray返回 JNIEXPORT jobjectArray JNICALL Java_src_pathfinder_PathFinder_neighbourMatrixGenerator (JNIEnv * env, jobject b,...) { int i,j; BOOL tt=1; jclass intClass = (*env)->FindCl

所以我决定将
dll
导入到我的java代码中

它所做的是计算邻居矩阵。问题是我不知道如何将矩阵作为
jobjectArray
返回

JNIEXPORT jobjectArray JNICALL Java_src_pathfinder_PathFinder_neighbourMatrixGenerator (JNIEnv * env, jobject b,...) {
    int i,j;
    BOOL tt=1;

    jclass intClass = (*env)->FindClass(env, "java/lang/Integer");
    jobjectArray row;
    jobjectArray rows;

    int **matrix = (int**)calloc(size, sizeof(int*));

    for(i = 0; i < size; i++) {
        matrix[i] = (int *) calloc(size, sizeof(int));
    }

    for(i=0; i<size; i++) {
        row = (*env)->NewObjectArray(env, size, intClass, 0);

        for(j=0; j<size; j++) {
            (*env)->SetObjectArrayElement(env, row, j, (jobject)matrix[i][j]); // this line is 100% broken
        }

        if(tt==1) {
            tt=0;rows = (*env)->NewObjectArray(env, size, (*env)->GetObjectClass(env, row), 0);
        }

        (*env)->SetObjectArrayElement(env, rows, i, row);
    }

    return rows;
}
错误日志:


我很高兴能为你提供一些线索,看看这有什么不对,因为这对我来说是一种黑魔法

似乎矩阵是pSize*pSize,那么你首先需要新的pSize数组来返回,然后是新数组并存储在returnArray[i]中,然后返回第一个数组

顺便说一句,这里显示的代码很适合纯java实现。我想如果经常调用它,性能会更好。

Java中的数组是对象。
Loaded generator.dll
counted total rects: 75
#
# A fatal error has been detected by the Java Runtime Environment:
#
#  EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x621e8551, pid=5336, tid=5704
#
# JRE version: Java(TM) SE Runtime Environment (8.0-b75) (build 1.8.0-ea-b75)
# Java VM: Java HotSpot(TM) Client VM (25.0-b17 mixed mode windows-x86 )
# Problematic frame:
# V  [jvm.dll+0xc8551]
#
# Failed to write core dump. Minidumps are not enabled by default on client vers
ions of Windows
#
# An error report file with more information is saved as:
# C:\HnH\hs_err_pid5336.log
#
# If you would like to submit a bug report, please visit:
#   http://bugreport.sun.com/bugreport/crash.jsp
#