首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >错误:对“QAndroidJniObject::callStaticMethod<_jstring*>(char _jstring* const*,char const*”的未定义引用

错误:对“QAndroidJniObject::callStaticMethod<_jstring*>(char _jstring* const*,char const*”的未定义引用
EN

Stack Overflow用户
提问于 2014-12-06 11:48:27
回答 2查看 2.3K关注 0票数 5

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

当返回int时,这段代码编译得很好:

代码语言:javascript
复制
jint a = QAndroidJniObject::callStaticMethod<jint>("HelloJava", "getInt");

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

代码语言:javascript
复制
jstring b = QAndroidJniObject::callStaticMethod<jstring>("HelloJava", "getString");

它失败了

错误:对“QAndroidJniObject::callStaticMethod<_jstring*>(char _jstring* const*,char const*”的未定义引用

既然QAndroidJniObject::callStaticMethod是一个模板函数,那么如何为一种类型定义它,而为另一种类型定义它呢?

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-12-06 12:15:00

正如您在下表中看到的那样,整数类型是基本类型,而其余类型是对象类型。因此,我建议您尝试使用:

代码语言:javascript
复制
jstring b = QAndroidJniObject::callStaticObjectMethod<jstring>("HelloJava", "getString")

这不是一个bug,而是一个特性。关于官方立场,请参见此问题跟踪器条目

QAndroidJniObject/jstring :没有引用

票数 5
EN

Stack Overflow用户

发布于 2016-07-05 02:09:19

试试这个:

代码语言:javascript
复制
 QAndroidJniObject jb = QAndroidJniObject::callStaticObjectMethod("HelloJava", "getString", "()Ljava/lang/String;");
 QString b = jb.toString();
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27331347

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档