如何使用 JNI 从 Java 方法将字符串值导入 C++

How to get a String value into C++ from Java method using JNI

我的 Java class 中有一个方法 returns 一个字符串。当前方法签名 ()Ljava/lang/String; 我可以在本机调用中使用 JVM 创建 class 和方法 ID。 做过GetStaticMethodID等...都很好

如何调用这个方法?例如:env->CallIntMethod() env->CallCharMethod() ....哪个选项可以返回字符串?

在 C++ 中,我需要复制这个 Java 方法返回的字符串值。 注意:如果需要,我可以更改 Jar 中方法的签名。或者可以添加另一个方法来包装另一个。

returns Java String 应该被调用为

的方法
jstring js = static_cast<jstring>(env->CallObjectMethod(jobj, mId));

现在您可以使用

const char *cstr = env->GetStringUTFChars(js, nullptr);

不要忘记在使用后释放字符串:

env->ReleaseStringUTFChars(js, cstr);

您可能会发现有必要释放 Java 本地引用,

env->FreeLocalReference(js);