次の情報源について質問がありますが、少しわかりやすくするために簡略化しました。
cコード
struct test
{
int test1;
};
int create_context(test **context);
int use_context(test *context);
Javaコード
public static class test extends Structure {
public int test1;
public test() {
super();
}
public test()(Pointer p) {
super(p);
}
protected List getFieldOrder() {
return Arrays.asList("test1");
}
public test(int test1) {
super();
this.test1 = test1;
}
public static class ByReference extends test implements Structure.ByReference {
};
public static class ByValue extends test implements Structure.ByValue {
};
}
public static native int create_context(PointerByReference context);
public static native int use_context(TestLibrary.test context);
私はこのようにJavaの構造にアクセスします、
PointerByReference contextPointer = new PointerByReference();
int status = INSTANCE.create_context(contextPointer);
test context = new test(contextPointer.getValue());
status = INCTANCE.use_context(context);
Visual Studioでこれをデバッグしたとき、create_contextとuse_contextに異なるメモリアドレスが使用されていることを確認しました。int test1の値を設定すると、それは正しいのですが、なぜコンテキストのアドレスが異なるのか疑問に思います。誰かアイデアがありますか?それはメモリの問題につながりませんでしたか?または、私が間違っていることについて何か考えはありますか?ありがとうバレンチナ