我正在尝试使用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 const*)' 的引用
既然QAndroidJniObject::callStaticMethod
是模板函数,那么如何为一种类型定义但为另一种类型未定义呢?
编辑:实际上,我只是用jobject
, jbyteArray
, jbooleanArray
, jbyte
,jboolean
等进行了测试。这就是我发现的 - 只有整数类型,如jshort
, jint
, jlong
,jboolean
有效,而字符串、数组和对象都给出undefined reference
错误。