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