在函数中将多个字符串从c传递给java(jni)

时间:2011-06-12 20:04:37

标签: java c++ string java-native-interface

在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(传递)。

如果该功能仍无效,那将是件好事。

1 个答案:

答案 0 :(得分:0)

这可以通过实现 a)在for循环中调用java方法(回调)(基本上是所需数组的setter) b)将jbyte(int)数组作为参数传递并将其填入循环中 c)你提到的方法 - 打包返回对象(在字节数组中)并返回它;在java端解压缩。

您不感兴趣的选项是最佳方法和采用的一般方法   JNI代码的主要重点是减少跨Java-C的调用(反之亦然)。如果您正在编写非平凡的代码,请尝试修改您的选项