JNA から C でこのメソッド シグネチャを使用してメソッドを呼び出すにはどうすればよいですか?
int open_device(context *ctx, device **dev, int index);
C メソッドの最後の 2 行は次のようになります。
*dev = pdev;
return 0;
dev
それがそのメソッドでの唯一の使用です。つまり、メソッドへの空のポインターにポインターを渡す必要がありますよね? 次に、メソッドは空のポインターにdevice
オブジェクトのアドレスを入力し、デバイスへのポインターを他のメソッドに渡すことができます。
私の質問は次のとおりです。これは正しい方法ですか?そうである場合、Java から新しいポインターを割り当てるにはどうすればよいですか?
受け入れられた答えに基づいて、私はこれをしました:
Memory p = new Memory(Pointer.SIZE);
Memory p2 = new Memory(Pointer.SIZE);
p.setPointer(0, p2);
nativeLib.open_device(ctx, p, index);
return p2;