libmtp不在MacOSX上使用HAVE_USB1标志构建

时间:2014-10-15 01:22:46

标签: xcode macos libusb dylib mtp

我目前正在尝试使用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

由于

1 个答案:

答案 0 :(得分:0)

我的建议是使用自制软件在你的OSX开发盒上获取libmtp。 homebrew将为您提供libusb,libusb-compat,并为您提供动态和静态的libmtp库。

除非您正在进行libmtp开发,否则这是使用libmtp的最快方式。