在JNI中,当我们想要将字符串从C传递给java时,我们通过(C ++)来实现:
return env->NewStringUTF("MY String");
由于这是一个return语句,因此只能调用一次。只能将1个字符串从C传递给Java。
我们想要将多个String从C传递给Java的函数怎么样?!
例如,考虑一个函数想要传递多个字符串的情况:
void num()
{
for(int i=0;i<10;i++)
{
pass i from C to java..
}
}
我该怎么做?
注意:我知道这可以通过使用字符串数组或连接i并最后返回字符串来实现。另外,我知道我是一个整数,我知道如何在c ++中将整数转换为String。
考虑到这是必须传递i,因为循环运行通过i(传递)。
如果该功能仍无效,那将是件好事。
答案 0 :(得分:0)
这可以通过实现 a)在for循环中调用java方法(回调)(基本上是所需数组的setter) b)将jbyte(int)数组作为参数传递并将其填入循环中 c)你提到的方法 - 打包返回对象(在字节数组中)并返回它;在java端解压缩。
您不感兴趣的选项是最佳方法和采用的一般方法 JNI代码的主要重点是减少跨Java-C的调用(反之亦然)。如果您正在编写非平凡的代码,请尝试修改您的选项