gpt4 book ai didi

java-native-interface - 如何在函数参数中将字符字符串的值传递给 java 字符串(JNI 到 Java)?

转载 作者:行者123 更新时间:2023-12-04 06:28:47 24 4
gpt4 key购买 nike

嗨,我想在android-ndk中将字符串从jni传递给java到java。
假设这是我的 native 功能。

private native int myFunc(String buffer);

这是我在 jni 中的 native 函数:
jint Java_com_example_twolibs_myFunc(JNIEnv*  env, jobject  thiz, jstring buffString){
//I want to pass a character array to buffString from here, that I would read from java as String.
return 0;
}

怎么做?

最佳答案

我不能完全解析这个问题。将字符串“从 jni 传递到 java”听起来有些多余。

如果您只想从 native 代码获取字符串的内容,则可以使用 JNI GetStringUTFChars 来获取 UTF-8 表示。字符串是不可变的,不能直接修改。您可以使用 NewStringUTF 从 native 创建新字符串。

请注意,传递给 NewStringUTF 的字符串数据必须采用“修改后的 UTF-8”形式。有关这意味着什么的解释,请参阅 JNI 文档。

如果您只想传递字符,您可能需要改用 char[] 缓冲区(GetCharArrayElements、ReleaseCharArrayElements)。请注意,Java 语言字符是 UTF-16,因此“jchar”是一个无符号的 16 位值(不要尝试将它们视为 C++ 8 位“char”)。

关于java-native-interface - 如何在函数参数中将字符字符串的值传递给 java 字符串(JNI 到 Java)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5701494/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com