首页 文章

如何使用JNI从Java方法将String值转换为C.

提问于
浏览
0

我的Java类中有一个返回字符串的方法 . 方法签名current()Ljava / lang / String;我可以在本机调用中使用JVM创建类和方法id . 做过GetStaticMethodID等......一切都很好 .

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

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

1 回答

  • 3

    返回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);
    

相关问题