我在Linux上用C++调用libusb_open
时遇到麻烦(在Raspberry Pi上运行,但使用Exagear虚拟化为x86)。
我可以找到一个使用libusb_get_device_list
的设备,但使用libusb_open
将设备转换为设备处理程序似乎会引起问题,即使它返回0(成功),也无法再执行任何命令。它给了我错误:
libusb: error [op_open] getcap failed (22)
更新一点挖掘发现,以下命令正在产生错误(在libusb中):
r = ioctl(hpriv->fd, IOCTL_USBFS_GET_CAPABILITIES, &hpriv->caps);
其中IOCTL_USBFS_GET_CAPABILITIES
是_IOR('U', 26, __u32)
。挖掘发现error 22
中的ioctl
是无效的参数。我仍在尝试取消选择,但是在此提供的任何帮助将不胜感激。 最佳答案
我不知道在这种情况下是否会引起问题,但是虚拟化的x86可能会引起问题,因为功能很可能是由基于ARM的OS赋予的。如果我的假设正确,那么库将无法处理您的系统正在使用的格式。我建议您在x86平台上测试代码,而无需像VMWare工作站或KVM这样的任何虚拟化
关于c++ - libusb:在Linux上的C++中,错误[op_open] getcap失败,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41504792/