1

libusb を JNI ラッパーでラップしました (他のものを使用)。Java と C の間で usb_device を渡すことができる必要があります。

私のJavaクラスには、Cから呼び出されるコンストラクターによって設定される長いフィールドがあります。Cコードでは、このようにusb構造体へのポインターをキャストします

device = (*env)->NewObject(env, class, mid, (jlong)list->dev);

後でメソッドを実装する別の C 関数で、ポインターを取得します。

jlong device_pointer;
device_pointer = (*env)->GetLongField(env, device, fid);

これは Linux では問題なく動作するように見えますが、Mac では問題が発生します。これは、C と Java の間でポインターを渡す安全な方法ではないようです。これを行う安全な方法は何ですか?

4

0 に答える 0