通过JNI调用简单的java静态方法是不起作用的,尽管c++编译并运行它



用静态方法考虑这个Java类:

public class TestClass{
    public string str;
    public TestClass() {
        str = "Test From Java";
    }
    public static String staticMethod() {
        return "Test From Java";
    }
}

我在c++文件中写了以下几行代码:

QAndroidJniObject str =  QAndroidJniObject::callStaticObjectMethod(
                                   "org/.../TestClass"
                                   ,"staticMethod"
                                   ,"(V)Ljava/lang/String;");

似乎一切都在工作,但我不知道如何使用str对象。我尝试使用str.tostring()方法将它转换为QString对象,但它总是返回一个空字符串。为什么它没有按预期工作?我还测试了()Ljava/lang/String;的方法签名,但没有成功
提前谢谢。

调用方法时,应在<...>中指定返回的JNI类型:

QAndroidJniObject str =  QAndroidJniObject::callStaticObjectMethod<jstring>(
                               "org/.../TestClass"
                               ,"staticMethod");
QString string = str.toString();

这里不需要定义签名,因为函数没有参数。

相关内容

  • 没有找到相关文章

最新更新