C和JNI中的ArrayList

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);

我想在C语言中创建一个ArrayList,然后从中创建一个Java JNI数组,如何从这段代码中返回正确的“11”,“22”,“33”,“44”数组?
警告:
data [0] =“11”;:警告:赋值会使指针变为整数
str =(* env) -&gt; NewStringUTF(env,data [i]);:警告:传递参数2给'(* env) -&gt; NewStringUTF'会使指针变为整数

你想从C语言返回一个字符数组到Java程序中,是吗?我说得对吗? - user370305
我想从C语言返回一个字符串数组到Java。 - lacas
我的下面的答案是关于从C返回字符数组到Java的。 - user370305
1个回答

2

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接