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