2011-11-10 15 views
11

In realtà, io chiamo una funzione C++:Come utilizzare un array di jobject? (JNI)

JNIEXPORT vuoto JNICALL Java_test_main_JniFunctions_testObject (MEnv * env, jobject obj, jobjectArray objArray) {....}

E quello che ho 'Mi piacerebbe fare, è tornare i valori dell'oggetto originale. Considerando la dichiarazione codice Java per questo oggetto:

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

In exemple, ottenere il valore della terza riga della seconda colonna.

Qualcuno ha un'idea su come farlo ??

risposta

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

grazie ma mi dà questo errore ::> IntelliSense: un valore di tipo "const char *" non può essere utilizzato per inizializzare un'entità di tipo "char *" E se cambio il "" char" * "" "a una" "" stringa "" ", mi dà quel tipo di valore" "" <ü "" "così ..... – Jsncrdnl

+0

Gli errori di compilazione sarebbero più interessanti da vedere. Penso che tu debba usare 'const char * cvalue'. Modificherò la risposta ... – weekens

+0

Grande! Ha funzionato !! Grazie ! ^^ – Jsncrdnl

Problemi correlati