c++之libusb:在Linux上的C++中,错误[op_open] getcap失败

lovecherry 阅读:22 2024-06-20 12:54:19 评论:0

我在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这样的任何虚拟化


标签:linux
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

关注我们

一个IT知识分享的公众号