gpt4 book ai didi

java - 如何使用 JNI 将字段从 C++ 设置为 Java

转载 作者:行者123 更新时间:2023-11-28 02:31:09 26 4
gpt4 key购买 nike

我有一个java类:

public class LibClass
{
public static String receivedValue;
...native methods...
}

然后在 C++ 代码中,我想从 C++ 设置字符串的值。我不想创建新对象,我只想为字符串赋值。

到目前为止,在 C++ 中我有这个:

JNIEXPORT void JNICALL Java_com_aries_LibClass_singleCallback
(JNIEnv *env, jclass clz, jstring value)
{
jclass clazz = (env)->FindClass("com/aries/LibClass");

}

我正在寻找类似 (env)->SetObjectArrayElement 的东西,但用于字符串。

这是否可能,如果可能,如何实现?

谢谢

最佳答案

您将需要方法“GetStaticFieldID()”和“SetStaticObjectField()”。 Java 字符串只是一个对象。 (我假设您知道如何从 native 字符串创建 Java 字符串)。

参见 Accessing Static Fields在 JNI 文档中。

编辑:示例 C(非 C++)代码(省略错误检查)

jstring str;
JNIEnv *env;
jclass clazz;
jfieldID fid;

// initialize str and env here ...

clazz = (*env)->FindClass(env, "my/package/MyClass");
fid = (*env)->GetStaticFieldID(env, clazz , "myField", "Ljava/lang/String;");
(*env)->SetStaticObjectField(env, clazz, fid, str);

关于java - 如何使用 JNI 将字段从 C++ 设置为 Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28967390/

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