java - C 和 JNI 数组列表

标签 java android c java-native-interface

        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 中创建一个数组列表,然后从中创建一个 java jni 数组,我怎样才能从这段代码中返回正确的“11”、“22”、“33”、“44”数组?

警告:

data[0] = "11";: 警告:赋值从指针生成整数而不进行强制转换

str = (*env)->NewStringUTF(env, data[i] );: 警告:传递 '(*env)->NewStringUTF' 的参数 2 使指针来自没有 a 的整数 Actor

最佳答案

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

关于java - C 和 JNI 数组列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8355615/

相关文章:

c - 在 c 中使用锯齿状数组

java - 如何使用Gson解析动态json?

android - 从 EditText 及其内容创建位图图像

java - Android AsyncTask 下载 .mp3 文件 - 信息和缩略图

java - 无法在文件浏览器中查看所有文件

c - vSphere API 和自动化虚拟机管理

java - 如何对这个类进行类型转换?

java - NavigationDrawer 内的 RecyclerView 不滚动

Java - 位级字节数组算术?

将链表转换为队列(移动节点)