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 の間でポインターを渡す安全な方法ではないようです。これを行う安全な方法は何ですか?