Arrays 从java到C的jni结构
我有一个问题。在java中,我有一个类Arrays 从java到C的jni结构,arrays,struct,java-native-interface,Arrays,Struct,Java Native Interface,我有一个问题。在java中,我有一个类 public class s_k { public byte[][] s; public int r; } 在C结构中 typedef struct { unsigned char s[10][10]; int r; } s_k; 有一个函数,java将其作为参数类型s_k进行传递。 如何在C代码中获取并更改它对Java类进行结构反射是没有意义的。它将是Java类的副本,这意味着更改它不会更改原始Java对象。我想您确实希望这些
public class s_k {
public byte[][] s;
public int r;
}
在C结构中
typedef struct {
unsigned char s[10][10];
int r;
} s_k;
有一个函数,java将其作为参数类型s_k进行传递。
如何在C代码中获取并更改它对Java类进行结构反射是没有意义的。它将是Java类的副本,这意味着更改它不会更改原始Java对象。我想您确实希望这些更改反映在原始对象中,对吗 因此,只需将
suk
实例作为jobject
传递,并使用JNI的强大功能直接访问它:
- r使用
然后GetFieldID
SetIntField
- s再次使用
,然后使用GetFieldID
(数组是Java中的一个对象),然后使用GetObjectField
GetByteArrayElements
关于r,一切都很好!GetObjectClass,然后是GetFieldID,然后是GetIntField。但是我和s有困难。GetObjectClass、GetFieldID、GetObjectField和GetByteArrayRegion,但它提供了一些其他数据。这些步骤会有什么问题?简化数据以证明问题。将其设置为一维数组,并使用
GetByteArrayElements
以简单的方式获取整个数组。它不可能是“其他数据”。如果问题仍然存在,请使用特定的代码片段填写新问题。让你的问题集中起来。