I'm trying to use QAndroidJniObject
. As a test I'm just calling 2 Java functions, one returns an int, the other a string.
When returning an int, this code compiles fine:
jint a = QAndroidJniObject::callStaticMethod<jint>("HelloJava", "getInt");
But if I change it to calling a function returning a string, it fails:
jstring b = QAndroidJniObject::callStaticMethod<jstring>("HelloJava", "getString");
It fails with
error: undefined reference to '_jstring* QAndroidJniObject::callStaticMethod<_jstring*>(char const*, char const*)'
Since QAndroidJniObject::callStaticMethod
is a template function, how can it be defined for one type but undefined for another?
Edit: Actually, I just tested with jobject
, jbyteArray
, jbooleanArray
, jbyte
, jboolean
, etc. This is what I found - only the integral number types such as jshort
, jint
, jlong
, jboolean
work, while strings, arrays, and objects all give an undefined reference
error.