2011-11-10 22 views
11

De hecho, yo llamo una función de C++:¿Cómo usar una matriz jobject? (JNI)

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

Y lo que Me gustaría hacer, recuperar los valores del objeto original. Teniendo en cuenta la declaración de código java para este objeto:

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

En exemple, obtener el valor de la tercera fila en la segunda columna.

¿Alguien tiene una idea de cómo hacerlo?

Respuesta

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

gracias pero me da ese error ::> IntelliSense: un valor de tipo "const char *" no puede ser utilizado para inicializar una entidad de tipo "char *" Y si cambio de la "" char" * "" "a" "" cadena "" ", me da ese tipo de valor" "" <ü "" "así que ..... – Jsncrdnl

+0

Compilar errores sería más interesante de ver. Creo que debes usar 'const char * cvalue'. Voy a editar la respuesta ... – weekens

+0

¡Genial! Funcionó !! Gracias ! ^^ – Jsncrdnl

Cuestiones relacionadas