gpt4 book ai didi

java - 从 jobject 数组 JNI 获取 Jclass 或 jobject

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

我有下面的 Java 代码,其中 Array 是一个自定义对象。

public native int pax_store_get_data_avail_info(DataAvailable[] stats_array);

我的 JNI 生成文件是

    JNIEXPORT jint JNICALL Java_demo_JNIWrapper_pax_1store_1get_1data_1avail_1info
(JNIEnv *env, jclass jclass1, jobjectArray jobj){
}

我想在 JNI 中填充 jobjectArray,当我尝试使用我的实现时我的程序崩溃了。

JNIEXPORT jint JNICALL Java_demo_JNIWrapper_pax_1store_1get_1data_1avail_1info
(JNIEnv *env, jclass jclass1, jobjectArray jobj){


struct pax_store_data_avail_stat_s test_stat [2] ;

int i;

test_stat [0].time = 1460332625; // 4/10/2016, 4:57:05 PM
test_stat [0].bytes_in_this_second = 20;

test_stat [1].time = 1460332626; // 4/10/2016, 4:57:06 PM
test_stat [1].bytes_in_this_second = 30;
jclass dataClass=(*env)->GetObjectClass(env,"demo/DataAvailable");//Crash Over here

我无法获得 Object Class。因此,如果我从 Jobject Array 获得 jclass 或 jobject,请教我。

是否有任何其他方法可以用来填充 JNI 代码中的 Jobject 数组。

最佳答案

给定一个jobject,您可以使用GetObjectClass 来检索对象的类:

jobject object = ...
jclass c =(*env)->GetObjectClass(env, object);

显然传递类名是行不通的。相反 - 给定一个类名 - 使用 FindClass 获取 jclass:

jclass c =(*env)->FindClass(env, "demo/DataAvailable");

关于java - 从 jobject 数组 JNI 获取 Jclass 或 jobject,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36634995/

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