错误:未定义对'_jstring* QAndroidJniObject::callStaticMethod<_jstring*>(char const*, char const*)'的



我正在尝试使用QAndroidJniObject .作为测试,我只调用 2 个 Java 函数,一个返回 int,另一个返回字符串。

返回 int 时,此代码编译良好:

jint a = QAndroidJniObject::callStaticMethod<jint>("HelloJava", "getInt");

但是如果我将其更改为调用返回字符串的函数,它将失败:

jstring b = QAndroidJniObject::callStaticMethod<jstring>("HelloJava", "getString");

它失败了

错误:未定义对"_jstring* 的引用 QAndroidJniObject::callStaticMethod<_jstring*>(char const*, char 康斯特*)'

由于QAndroidJniObject::callStaticMethod是模板函数,如何为一种类型定义它,而为另一种类型定义未定义?

编辑:实际上,我刚刚测试了jobjectjbyteArrayjbooleanArrayjbytejboolean等。这就是我发现的 - 只有整数类型,如jshortjintjlongjboolean工作,而字符串、数组和对象都给出了undefined reference错误。

如下表所示,整数类型是基元类型,而其余类型是对象类型。因此,我建议您尝试使用:

jstring b = QAndroidJniObject::callStaticObjectMethod<jstring>("HelloJava", "getString")

这不是错误,而是一个功能。请参阅官方立场的此问题跟踪器条目:

QAndroidJniObject/jstring : no reference

试试这个:

 QAndroidJniObject jb = QAndroidJniObject::callStaticObjectMethod("HelloJava", "getString", "()Ljava/lang/String;");
 QString b = jb.toString();

相关内容

  • 没有找到相关文章

最新更新