android - 错误 : undefined reference to '_jstring* QAndroidJniObject::callStaticMethod<_jstring*>(char const*, char const*)'

标签 android c++ qt linker-errors qtandroidextras

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

当返回一个 int 时,这段代码可以正常编译:

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

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

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

它失败了

error: undefined reference to '_jstring* QAndroidJniObject::callStaticMethod<_jstring*>(char const*, char const*)'

既然 QAndroidJniObject::callStaticMethod 是一个模板函数,它怎么可能为一种类型定义而对于另一种类型未定义呢?

编辑: 实际上,我只是用jobjectjbyteArrayjbooleanArrayjbyte<进行了测试, jboolean, etc. 这是我找到的-只有整数类型比如jshort, jint, jlong jboolean 有效,而字符串、数组和对象都会给出一个 undefined reference 错误。

最佳答案

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

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

这不是错误,而是功能。参见 this issue tracker entry官方立场:

QAndroidJniObject/jstring : no reference

关于android - 错误 : undefined reference to '_jstring* QAndroidJniObject::callStaticMethod<_jstring*>(char const*, char const*)' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27331347/

相关文章:

c++ - mpicxx : Incompatible library version

c++ - 错误 C3861 : 'decrypt' not found even with function in header

c++ - 以编程方式检索 QSS 样式表属性的值

c++ - Qt 内置数据结构中是否有忽略项目的重复插入?

java - 检测 SurfaceView 上绘制的 View 的触摸

java - 禁用手机横向但允许平板电脑

android - 测试 Android 在 App Billing 中,应用程序无法在测试模式下运行

常量变量中的 Java 请求代码

c++ - 在某些特殊情况下,Win32 ShowWindow api 在 Windows 7 SP1 上的行为是否不同?

qt - 在 TableView 中保持相同的选择颜色,无论它是否处于事件状态