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



我目前正在尝试在macOSX上使用libusb-1(1.0.19)和usb-compat(0.1.5)构建libmtp 1.1.8版本,以生成动态lib。

我不确定libmtp是否真的支持USB1-lib,主要是因为我在构建libusb-glue.c时遇到了问题。在config.h中,我有:

#undef HAVE_LIBUSB0
#define HAVE_LIBUSB1 /**/

四肢胶水.c是做例子:

result = USB_BULK_READ(ptp_usb->handle,
               ptp_usb->inep,
               (char*) bytes,
               toread,
               ptp_usb->timeout);

当移动到usb1而不是usb0 时,没有添加参数的标志

由于我有标志USB1启用和USB0禁用,四肢胶水.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支持的缺失参数

你知道我应该更好地使用libusb1还是libusb0吗。也许构建lib-usb0+libusb compat比使用usb1 更好

感谢

我的建议是使用自制程序在OSX开发框中获得libmtp。自制程序将为您提供libusb、libusbcompt,并为您留下一个libmtp的动态和静态库。

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

相关内容

最新更新