在 JNI 中,当我们想将字符串从 C 传递给 java 时,我们通过 (C++) 来实现:
return env->NewStringUTF("MY String");
因为这是一个返回语句,所以它只能被调用一次。只能将 1 个字符串从 C 传递到 Java。
我们想要将多个字符串从 C 传递给 Java 的函数呢?!
例如考虑一个函数想要传递多个字符串的情况:
void num()
{
for(int i=0;i<10;i++)
{
pass i from C to java..
}
}
我该怎么做?
注意:我知道这可以通过使用字符串数组或连接 i 并最后返回字符串来实现。另外,我知道 i 是一个整数,我知道如何在 C++ 中将整数转换为字符串。
考虑到当循环通过 i(已传递)时传递 i 是必要的。
函数保持为void就好了。
最佳答案
这可以通过
实现
a) 在 for 循环中调用 java 方法(回调)(本质上是所需数组的 setter )。
b) 传递 jbyte(int) 数组作为参数并在循环中填充它。
c)你提到的方法 - 打包返回对象(在字节数组中)并返回它;在java端解压它。
你不感兴趣的选项是最好的方法和一般采用的方法。
JNI 代码的主要重点是减少跨 Java-C 的调用(反之亦然)。如果您正在编写不平凡的代码,请尝试修改您的选项
关于java - 在函数中将多个字符串从 c 传递到 java(jni),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6324326/