Ana*_*nd 1 c++ java-native-interface jnienv
我的 Java 类中有一个返回 string 的方法。当前方法签名 ()Ljava/lang/String; 我可以在本地调用中使用 JVM 创建类和方法 ID。已经完成了 GetStaticMethodID 等......一切都很好。
如何调用这个方法?例如: env->CallIntMethod() env->CallCharMethod() .... 哪个选项可以取回字符串?
在 C++ 中,我需要复制此 Java 方法返回的字符串值。注意:如果需要,我可以更改 Jar 中方法的签名。或者可以添加另一种方法来包装另一个。
返回 Java String 的方法应该被称为
jstring js = static_cast<jstring>(env->CallObjectMethod(jobj, mId));
Run Code Online (Sandbox Code Playgroud)
现在你可以使用
const char *cstr = env->GetStringUTFChars(js, nullptr);
Run Code Online (Sandbox Code Playgroud)
使用后不要忘记释放字符串:
env->ReleaseStringUTFChars(js, cstr);
Run Code Online (Sandbox Code Playgroud)
您可能会发现有必要释放 Java 本地引用,
env->FreeLocalReference(js);
Run Code Online (Sandbox Code Playgroud)