我有一个问题。在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中我有一个类
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 对象。我想您确实希望更改反映在原始对象中,对吗?
因此,只需将s_k
实例传递为jobject
并使用 JNI 的功能直接访问它:
GetFieldID
然后SetIntField
GetFieldID
, then GetObjectField
(array 是 Java 中的一个对象) 然后GetByteArrayElements
没有更简单的方法,除非您想深入了解JNA。
更新:您的问题似乎有重复: