通过JNI访问Java数组
首先我们在Java里面创建一个数组如果我们正常在Java想调用这个方法,那么代码是这样的
Test t1 = new Test();
int []arr = t1.getArr();
那么在native里面我们首先要找到test这个方法,然后实例化一个对象,然后再调用getArr这个方法
先把test搞出来先
后面我们就要调用对象的方法
按照常理返回的是一个arr数组,我们来接一下.
然后它报错,我们强制转换一下.
jintArray myArr = static_cast<jintArray>(env->CallObjectMethod(testObj,getArrId));
我们现在要得到它里面的元素进行访问,所以调用GetIntArrayElements这个方法,返回值是jint类型的地址
第第二个值我们填null,在ndk里面就是nullptr
jint *arrays = env->GetIntArrayElements(myArr, nullptr);
代码书写完成.
运行一下,结果也是正确的得到了.
如果是以参数传进来的就更简单了
结果也是正确的
莫问刀 发表于 2021-12-15 23:41
如果方法的入参是java的自定义类型,不是常用类型这个怎么做呢,还有就是,大佬最终的教程是想带我们干什么 ...
就是object啊,Java里面万物皆object.
这能做啥功能,这周就完结ndk的学习了.
学新的去{:1_918:} QingYi. 发表于 2021-12-16 08:52
就是object啊,Java里面万物皆object.
这能做啥功能,这周就完结ndk的学习了.
学新的去
{:1_907:}啊这,我以为要做什么牛逼黑科技 不错不错,还可以继续改善 学习啦啊.,.{:1_905:}
学习啦啊.,. 如果方法的入参是java的自定义类型,不是常用类型这个怎么做呢,还有就是,大佬最终的教程是想带我们干什么牛逼哄哄的功能呢:lol 感谢分享,下载看看! 学习了。。 大佬搞得好高级的哦 study . exe