Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

C and JNI arraylist

        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 like to make an arraylist in c, and then from it, create a java jni array, How can I return the correct "11","22","33","44" array from this code?

warnings:

data[0] = "11";: warning: assignment makes integer from pointer without a cast

str = (*env)->NewStringUTF(env, data[i] );: warning: passing argument 2 of '(*env)->NewStringUTF' makes pointer from integer without a cast

like image 713
lacas Avatar asked Apr 17 '26 01:04

lacas


1 Answers

data is declared incorrectly. It should be char** instead of char*.

like image 154
x22 Avatar answered Apr 18 '26 15:04

x22