gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 17:42:28 25 4
gpt4 key购买 nike

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

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

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;
}

我得到的错误:

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
#

错误日志:http://wklej.to/1T2tW

我很高兴能得到任何线索,这可能是错误的,因为这对我来说是黑魔法

最佳答案

看起来矩阵是pSize * pSize,那么首先需要创建pSize的数组用于返回,然后创建数组并存储在returnArray[i]中,并返回第一个数组。

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

关于java - C-JNI 返回 2D int 数组作为 JobjectArray,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20576445/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com