我目前正在尝试在 mac OS X 上使用 lib usb-1 (1.0.19) 和 usb-compat(0.1.5) 构建 libmtp 版本 1.1.8 以生成动态库。
我不确定 libmtp 是否真的支持 USB1 lib,主要是因为我在构建 libusb-glue.c 时遇到了问题。在 config.h 中,我有:
#undef HAVE_LIBUSB0
#define HAVE_LIBUSB1 /**/
肢体glue.c 例如正在做:
result = USB_BULK_READ(ptp_usb->handle,
ptp_usb->inep,
(char*) bytes,
toread,
ptp_usb->timeout);
移动到usb1而不是usb0时没有标志添加参数
由于我有启用 USB1 和禁用 USB0 的标志,因此肢体-glue.h 的定义如下
#ifdef HAVE_LIBUSB1
#define USB_BULK_READ libusb_bulk_transfer
#define USB_BULK_WRITE libusb_bulk_transfer
#endif
#ifdef HAVE_LIBUSB0
#define USB_BULK_READ usb_bulk_read
#define USB_BULK_WRITE usb_bulk_write
#endif
#ifdef HAVE_LIBOPENUSB
#define USB_BULK_READ openusb_bulk_xfer
#define USB_BULK_WRITE openusb_bulk_xfer
#endif
如 libusb-1 文件的 sync.c 文件中所定义,它采用 6 个参数
int API_EXPORTED libusb_bulk_transfer(struct libusb_device_handle *dev_handle,
unsigned char endpoint, unsigned char *data, int length, int *transferred,
unsigned int timeout)
{
return do_sync_bulk_transfer(dev_handle, endpoint, data, length,
transferred, timeout, LIBUSB_TRANSFER_TYPE_BULK);
}
奇怪的是 USB_BULK_READ/WRITE 没有标记 USB0 或 USB1 支持以添加/删除 USB1 支持的缺失参数
任何想法或者你知道我是否应该更好地使用 lib usb1 或 lib usb0。也许最好构建 lib-usb0 + libusb-compat 而不是使用 usb1
谢谢