gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 05:47:06 40 4
gpt4 key购买 nike

考虑这个带有静态方法的 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();

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

关于android - 通过 JNI 调用简单的 java 静态方法不起作用,尽管 C++ 编译并运行它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28693031/

40 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com