2014-12-06 119 views
2

我正在嘗試使用QAndroidJniObject。作爲一個測試,我只是調用2個Java函數,一個返回一個int,另一個返回一個字符串。錯誤:未定義引用'_jstring * QAndroidJniObject :: callStaticMethod <_jstring*>(char const *,char const *)'

當返回一個int,這個代碼編譯好:

jint a = QAndroidJniObject::callStaticMethod<jint>("HelloJava", "getInt"); 

但如果我把它改爲調用一個函數返回一個字符串,它失敗:

jstring b = QAndroidJniObject::callStaticMethod<jstring>("HelloJava", "getString"); 

它失敗

error: undefined reference to '_jstring* QAndroidJniObject::callStaticMethod<_jstring*>(char const*, char const*)'

由於QAndroidJniObject::callStaticMethod是一個模板函數,它如何被定義爲一種類型,但是u ndefined爲另一個?

編輯:其實,我只是用jobjectjbyteArrayjbooleanArrayjbytejboolean等測試這是我發現的 - 只有整數類型,如jshortjintjlongjboolean工作,同時串,數組和對象都會給出undefined reference錯誤。

+1

整數類型是原始的,而的jstring不是。 – lpapp 2014-12-06 12:10:56

+0

因此'QAndroidJniObject :: callStaticMethod'不應該與'jstring'和'jobject'一起使用? – sashoalm 2014-12-06 12:12:11

回答

1

試試這個:

QAndroidJniObject jb = QAndroidJniObject::callStaticObjectMethod("HelloJava", "getString", "()Ljava/lang/String;"); 
QString b = jb.toString();