我的 Java 类中有一个方法返回一个字符串。当前方法签名 ()Ljava/lang/String; 我可以在 native 调用中使用 JVM 创建类和方法 ID。 已完成 GetStaticMethodID 等...一切都很好。
如何调用这个方法?例如:env->CallIntMethod() env->CallCharMethod() ....哪个选项可以返回字符串?
在 C++ 中,我需要复制此 Java 方法返回的字符串值。 注意:如果需要,我可以更改 Jar 中方法的签名。或者可以添加另一个方法来包装另一个。
最佳答案
返回 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);
关于c++ - 如何使用 JNI 从 Java 方法将字符串值导入 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53694735/