在函数中将多个字符串从c传递到javajni

问题描述

|| 在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的调用(反之亦然)。如果您正在编写非平凡的代码,请尝试修改您的选择     

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...