我目前正在尝试使用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 /**/
limbs-glue.c例如:
result = USB_BULK_READ(ptp_usb->handle,
ptp_usb->inep,
(char*) bytes,
toread,
ptp_usb->timeout);
移动到usb1而不是usb0
时,没有添加参数的标志由于我有USB1启用标志和USB0禁用,所以limbs-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
由于
答案 0 :(得分:0)
我的建议是使用自制软件在你的OSX开发盒上获取libmtp。 homebrew将为您提供libusb,libusb-compat,并为您提供动态和静态的libmtp库。
除非您正在进行libmtp开发,否则这是使用libmtp的最快方式。