【发布时间】:2014-12-06 11:48:27
【问题描述】:
我正在尝试使用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 常量*)'
既然QAndroidJniObject::callStaticMethod是一个模板函数,怎么可能只为一种类型定义而另一种类型未定义呢?
编辑:实际上,我只是用jobject、jbyteArray、jbooleanArray、jbyte、jboolean 等进行了测试。这是我发现的——只有整数jshort、jint、jlong、jboolean 等类型可以正常工作,而字符串、数组和对象都会给出 undefined reference 错误。
【问题讨论】:
-
整数类型是原始类型,而 jstring 不是。
-
所以
QAndroidJniObject::callStaticMethod不应该与jstring和jobject一起使用?
标签: android c++ qt linker-errors qtandroidextras