问题描述
||
在JNI中,当我们想将字符串从C传递给java时,可以通过(C ++)来完成:
return env->NewStringUTF(\"MY String\");
由于这是一个return语句,因此只能调用一次,即。从C到Java只能传递1个字符串。
我们要将C中的多个String传递给Java的函数呢?
例如,考虑一个函数要传递多个字符串的情况:
void num()
{
for(int i=0;i<10;i++)
{
pass i from C to java..
}
}
我该怎么做?
注意:我知道这可以通过使用字符串数组或通过连接i并最后返回字符串来实现。此外,我知道我是一个整数,并且我知道如何在c ++中将整数转换为String。
认为这是通过循环i传递i的必要条件。
如果该功能保持为空,那就太好了。
解决方法
这可以通过
a)在for循环中调用java方法(回调)(本质上是所需数组的设置器)。
b)传递jbyte(int)数组作为参数并将其填充到循环中。
c)您在问题中提到的方法-将返回对象包装在字节数组中并返回它;在Java端解压。
您不感兴趣的选择是最好的方法和采用的一般方法。
JNI代码的主要重点是减少跨Java-C的调用(反之亦然)。如果您正在编写非平凡的代码,请尝试修改您的选择