0

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

谢谢

4

1 回答 1

0

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

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

于 2014-12-02T05:51:28.697 回答