安卓 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 楼答案
必须手动从对象复制字段。可以调用JNI methods按名称获取字段的值。将字段本身传递到方法中可能比传递对象更容易