有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

安卓 Java到C对象传递

我有调用内核模块的C代码,我想向它传递一个结构。这似乎是可行的- char device catch multiple (int) ioctl-arguments

然而,我通过JavaJNI调用c代码。据说C结构映射是到Java对象的。因此,我将一个对象传递给C本机函数

这是我的JNI c函数

  JNIEXPORT jint JNICALL Java_com_context_test_ModCallLib_reNice
  (JNIEnv *env, jclass clazz, jobject obj){

     // convert objcet to struct  
     // call module through IOCTL passing struct as the parameter
  }

我应该如何从obj获取结构

编辑:这是我经过的物体

class Nice{

    int[] pids;
    int niceVal;

    Nice(List<Integer> pID, int n){
        pids = new int[pID.size()];
        for (int i=0; i < pids.length; i++)
        {
            pids[i] = pID.get(i).intValue();
        }
        niceVal = n;
    }
}

我想要的结构是

struct mesg {
     int pids[size_of_pids];
     int niceVal;
};

我该如何接近


共 (1) 个答案

  1. # 1 楼答案

    必须手动从对象复制字段。可以调用JNI methods按名称获取字段的值。将字段本身传递到方法中可能比传递对象更容易