1

我有一个问题。在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 代码中获取并更改它

4

1 回答 1

2

对 Java 类进行结构反射是没有意义的。它将是您的 Java 类的副本,这意味着更改它不会更改您的原始 Java 对象。我想您确实希望更改反映在原始对象中,对吗?

因此,只需将s_k实例传递为jobject并使用 JNI 的功能直接访问它:

  • rGetFieldID然后SetIntField
  • s再用GetFieldID, then GetObjectField(array 是 Java 中的一个对象) 然后GetByteArrayElements

没有更简单的方法,除非您想深入了解JNA

更新:您的问题似乎有重复:

如何使用 JNI 访问对象内的数组?

于 2012-10-16T17:37:54.170 回答