2013-05-28 195 views
0

爲什麼這個JNI代碼沒有返回值nbField?爲什麼這個JNI代碼沒有返回正確的值?

JNIEXPORT jint JNICALL Java_com_morpho_morphosmart_sdk_MorphoDatabaseNative_getNbField 
(JNIEnv *i_env, jobject thisObj, jlong morphoDatabasePointerCPP, jobject nbField){ 

I l_i_Ret; 
UL l_ul_NbField; 

l_i_Ret = dataBase->GetNbField(l_ul_NbField); 
    // l_ul_NbField is equal 2 after here 

if(l_i_Ret == 0) // l_i_Ret is not null 
{ 
    jclass longClass = i_env->GetObjectClass(nbField); 
    jfieldID val = i_env->GetFieldID(longClass, "value", "J"); 
    if(val == NULL) 
     return -899; 
    i_env->SetLongField(nbField, val, (L)l_ul_NbField); 
    // nbField is an output value wich is expected to have the value 2 after here ! 

} 

return l_i_Ret; } 

此代碼導致返回0,但nbField爲空! 的Java調用者

long nbField = 0 ; 
    int l_i_ret = morphoDatabase.getNbField(nbField); 
    Log.d("GetNBFields","after getNBFields : "+ nbField + " r : " + l_i_ret); 

的問題是在這部分代碼,nbField不返回l_ul_NbField值。

+3

「不工作」不是很精確... – dqms

+0

已更新,未返回值'nbField'... – DrDree

+1

顯示更多jni?你的make文件是什麼樣的?如果有構建錯誤,構建錯誤是什麼? –

回答

0

我找到了解決辦法是:

Long nbField = new Long(0); 

而非long

相關問題