sas*_*alm 4 c++ qt android linker-errors qtandroidextras
我正在尝试使用QAndroidJniObject。作为测试,我只调用2个Java函数,一个返回一个int,另一个返回一个字符串。
返回int时,此代码可正常编译:
jint a = QAndroidJniObject::callStaticMethod<jint>("HelloJava", "getInt");
Run Code Online (Sandbox Code Playgroud)
但是,如果我将其更改为调用返回字符串的函数,它将失败:
jstring b = QAndroidJniObject::callStaticMethod<jstring>("HelloJava", "getString");
Run Code Online (Sandbox Code Playgroud)
它失败了
错误:对'_jstring * QAndroidJniObject :: callStaticMethod <_jstring *>(char const *,char const *)'的未定义引用
既然QAndroidJniObject::callStaticMethod是模板函数,那么如何为一种类型定义它却为另一种类型定义它呢?
编辑:其实,我只是测试jobject,jbyteArray,jbooleanArray,jbyte,jboolean,等,这是我发现了什么-只有整数类型,如jshort,jint,jlong,jboolean工作,同时字符串,数组和对象都给出一个undefined reference错误。
正如你可以看到在下面的表格中,整数类型是原始的,而其余的都是对象类型。因此,我建议您尝试改用:
jstring b = QAndroidJniObject::callStaticObjectMethod<jstring>("HelloJava", "getString")
Run Code Online (Sandbox Code Playgroud)
这不是错误,而是功能。查看此问题跟踪器条目官方立场,:
QAndroidJniObject / jstring:无参考