gpt4 book ai didi

java - 如何从 C/C++ 调用 getter 返回二维数组?

转载 作者:太空宇宙 更新时间:2023-11-04 12:56:15 25 4
gpt4 key购买 nike

我对 JNI 有疑问。我想调用 getter(通过 JNI)返回二维数组并在 C/C++ 中处理这个数组。

在 Java 中,我实现了以下类:

package eu.cbridge;
...

public class LDIContainer {
private double[][] doubleData;
...

public double[][] getDoubleData() {
return doubleData;
}
...
}

在C/C++中,实现了以下本地方法:

JNIEXPORT void JNICALL Java_eu_cbridge_CWrapper_transferData__Leu_cbridge_LDIContainer
(JNIEnv *env, jobject, jobject) {

//Get class identifier
jclass cls = env->FindClass("eu/cbridge/LDIContainer");

// Get method ID
jmethodID mid = env->GetMethodID(cls, "getDoubleData", "()[[D");

// Call Java method
jobject mvdata = env->CallObjectMethod(cls, mid); // Causes an access violation in C!!!

...

}

此外,我想处理返回的二维数组。但是,我可以访问类 (cls) 并获取 jmethodID (mid)。当我调用该方法时,出现访问冲突异常 :(。

有谁知道如何使用对象的 getter 从 Java 的对象中获取二维数组?

最佳答案

我会将您的二维数组展平为一维数组,然后再发送。它应该比单独发送每一行的性能更高。

Convert a 2D array into a 1D array

关于java - 如何从 C/C++ 调用 getter 返回二维数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46540338/

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