我的Java类中有一个返回字符串的方法。当前方法签名()Ljava / lang / String; 我可以在本机调用中使用JVM创建类和方法ID。 完成GetStaticMethodID等...一切都很好。
如何调用此方法?例如:env-> CallIntMethod()env-> CallCharMethod()....哪个选项可以找回字符串?
在C ++中,我需要复制此Java方法确定的字符串值。 注意:如果需要,我可以在Jar中更改方法的签名。或者可以添加另一种方法来包装另一种方法。
答案 0 :(得分:4)
返回Java字符串的方法应称为
jstring js = static_cast<jstring>(env->CallObjectMethod(jobj, mId));
现在您可以使用
const char *cstr = env->GetStringUTFChars(js, nullptr);
使用后不要忘记释放字符串:
env->ReleaseStringUTFChars(js, cstr);
您可能发现有必要发布Java本地引用,
env->FreeLocalReference(js);