我正在尝试使用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错误。