問題が 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のパラメータータイプとして渡す1つの関数があります。Cコードで取得して変更する方法
問題が 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のパラメータータイプとして渡す1つの関数があります。Cコードで取得して変更する方法
Java クラスの構造反映を作成しても意味がありません。これは Java クラスのコピーになります。つまり、変更しても元の Java オブジェクトは変更されません。変更を元のオブジェクトに反映させたいと思いますよね?
したがって、単純にs_k
インスタンスを渡してjobject
、JNI の機能を使用して直接アクセスします。
GetFieldID
そしてSetIntField
GetFieldID
、次にGetObjectField
(配列は Java のオブジェクトです)、次にGetByteArrayElements
JNAに飛び込みたい場合を除き、これ以上簡単な方法はありません。
更新:あなたの質問の重複があるようです: