2011-12-02 39 views
3
 jobjectArray ret; 
     int i; 

     char *data = malloc(3 * sizeof(char *)); 

     if(data != NULL) { 
      data[0] = "11"; 
      data[1] = "22"; 
      data[2] = "33"; 
     } 
     data = realloc(data, 4 * sizeof(char *)); 
     if(data != NULL) { 
      data[3] = "44"; 
     } 

     jsize len=4; 

      ret= (jobjectArray)(*env)->NewObjectArray(env, len,(*env)->FindClass(env, "java/lang/String"),(*env)->NewStringUTF(env, "")); 
     LOGE("startxx"); 

     jstring  str; 
      for(i=0;i<len;i++) { 
       str = (*env)->NewStringUTF(env, data[i]); 
       (*env)->SetObjectArrayElement(env, ret, i, str); 
      } 

     LOGE("startxxx"); 

     free(data); 
     return(ret); 

I D喜欢让C中的数组列表,然后从它,创建一个Java JNI阵列,我怎样才能返回正确的 “11”, “22”, “33”,” 44“阵列从这个代码?C和JNI数组列表

警告:

数据[0] = “11” ;:警告:赋值时将指针整数,未作铸造

STR =(* ENV) - > NewStringUTF(ENV ,data [i]);:警告:传递'(* env) - > NewStringUTF'的参数2会使得整型指针无法投射

+0

你想返回一个字符数组从C到Java? M我对不对? – user370305

+0

我想返回一个字符串数组从C到Java – lacas

+0

而我的下面的答案是从C到Java返回字符数组.. – user370305

回答

2

数据声明不正确。它应该是char **而不是char *。