2011-11-10 14 views
11

W rzeczywistości nazywam C++ funkcja:Jak używać tablicy jobject? (JNI)

JNIEXPORT void JNICALL Java_test_main_JniFunctions_testObject (JNIEnv * env, jobject obj, jobjectArray objArray) {....}

I co ja Chciałbym odzyskać wartości oryginalnego obiektu. Biorąc pod uwagę deklarację kod Java dla tego obiektu:

jniFct.testObject(new Object[][] 
     { 
      {"testTable"}, 
      {0, 0.0, "aaa"}, 
      {1, 1.1, "bbb"}, 
      {2, 2.2, "ccc"} 
     }); 

W exemple, uzyskać wartość z trzeciego rzędu w drugiej kolumnie.

Ktoś ma pomysł, jak to zrobić?

Odpowiedz

12
jobject row = env->GetObjectArrayElement(objArray, 2); 
jobject value = env->GetObjectArrayElement((jobjectArray)row, 1); 
const char* cvalue = env->GetStringUTFChars((jstring)value, 0); 
+0

dziękuję ale to daje mi ten błąd ::> IntelliSense: wartość typu „const char *” nie może być używany do inicjacji podmiot typu „char *” i jeśli mogę zmienić „” "char * "" "do" "" ciąg "" ", daje mi taką wartość" "" <ü "" ", więc ..... – Jsncrdnl

+0

Błędy kompilacji byłyby bardziej interesujące. Myślę, że musisz użyć 'const char * cvalue'. Będę edytować odpowiedź ... – weekens

+0

Świetnie! Udało się! Dziękuję Ci ! ^^ – Jsncrdnl

Powiązane problemy