Windows下基于MSVC搭建libusb开发环境 (qq.com)
准备
官网
https://libusb.info/
源码
git下载或者官网下载
https://github.com/libusb/libusb.git
API参考
https://libusb.sourceforge.io/api-1.0/libusb_api.html
WIKI
https://github.com/libusb/libusb/wiki
WINDOWS下编译好的库
官网下可以直接下载Windows下编译好的开发包。
Libusb简介
跨平台建议使用libusb,如果仅在win下可以使用libusbk,实际上win上libusb也是使用libusbk去调用内核驱动,综合下表,使用libusb开发是最合适选择。
Libusb采用LGPL协议,对于商业软件中使用其作为第三方库使用,不修改其源码是合适的,这种情况不需要开源自己的部分。而对于基于此做二次开发修改源码的话,则修改后的代码需要继续符合 LGPL v2.1协议。
平台 | 链接 | 状态 | ||
---|---|---|---|---|
libusb | 跨平台 | https://libusb.info/ | libusb没有涉及Windows内核驱动,是一个用户空间库,支持以下内核驱动程序: 基本都是通过** libusbK.dll调用内核驱动。lWinUSB.sys无libusbK.dll时:libusb-1.0.dll --> WinUSB.dll --> WinUSB.sys有libusbK.dll时:libusb-1.0.dll -->libusbK.dll --> WinUSB.dll --> WinUSB.sysllibusbK.sys内核驱动libusb-1.0.dll --> libusbK.dll** --> libusbK.sysllibusb0.sys内核驱动(不够完善)libusb-1.0.dll -->libusbK.dll--> libusb0.syslusbdk驱动(不够完善)lHID驱动(不够完善),使用HIDAPI 更好 | 活跃原始网站libusb.org不再使用,libusbx原先是libusb的克隆现在已经合并到libusb,libusbx.org现在和libusb没有关系。 |
libusb-win32 | Windowslibusb0.sys(WDM)libusb0.dll(API) | https://sourceforge.net/p/libusb-win32/wiki/Home/https://github.com/mcuee/libusb-win32 | libusb0.dll(API)支持 使用libusb0.sys和libusbK.sys.API是libusb-0.1 API的超集 | 最后更新2022目前只做bug修复不再更新,跨平台建议使用libusb,仅win下建议使用libusbk |
libusbK | WindowslibusbK.sys(KMDF)libusbK.dll(API) | https://libusbk.sourceforge.net/UsbK3/index.htmlhttps://github.com/mcuee/libusbk/ | libusbK.dll(API)支持使用libusbK.sys,libusb0.sys,WinUSBlibusb在windows上即使用该库调用内核驱动。支持同步传输,完全兼容WinUSB的API。 | 活跃 |
openusb | Solaris | https://sourceforge.net/projects/openusb/ | 来源于libusb-1.0 | 最后更新2020年 |
usbdk | 跨平台 | https://github.com/daynix/UsbDk | 来源于libusb-1.0.21支持同步传输支持不如WinUSB/libusbK.sys/libusb0.sys | 最后更新2020 |
在Windows下使用
参考
https://github.com/libusb/libusb/wiki/Windows#How_to_use_libusb_on_Windows
我们这里基于libusbk
安装libusbk
https://sourceforge.net/projects/libusbk/
下载到的版本是libusbK-3.1.0.0-setup.exe
驱动切换
先下载Zadig用于切换驱动
https://zadig.akeo.ie/
编译libusb库
从 https://github.com/libusb/libusb.git下载最新的代码
进入代码目录双击打开libusb\\msvc\\libusb.sln (注我这里试用MSVC Community 2022)
点击左侧解决方案,菜单栏生成->生成解决方案
生成的动态库dll位于libusb\\build\\v143\\x64\\Debug\\dll下 libusb-1.0.dl libusb-1.0.lib
生成的静态库lib位于libusb\\build\\v143\\x64\\Debug\\lib下 libusb-1.0.lib
libusb\\build\\v143\\x64\\Debug下的getopt.lib
libusb\\build\\v143\\x64\\Debug下还生成了很多测试程序,比如.\\testlibusb.exe
PS C:\\Users\\qinyunti\\OneDrive\\wuqi\\usb\\libusb\\build\\v143\\x64\\Debug > .\\testlibusb.exe
Dev (bus 2, device 5): 0BDA - 4853 speed: 12M
Dev (bus 2, device 0): 8086 - 51ED speed: 5G
Dev (bus 2, device 12): 15BA - 002A speed: 480M
Dev (bus 2, device 6): 046D - C542 speed: 12M
Manufacturer: Logitech
Product: Wireless Receiver
Dev (bus 2, device 4): 174F - 1811 speed: 480M
Manufacturer:
Product: Integrated Camera
Dev (bus 2, device 2): 05E3 - 0612 speed: 5G
Dev (bus 2, device 14): 0403 - 6001 speed: 12M
Dev (bus 2, device 16): 16C0 - 05DC speed: 5G
Manufacturer: tusb.org
Product: USB Packet Viewer
Dev (bus 2, device 8): 0B95 - 1790 speed: 5G
Dev (bus 2, device 3): 05E3 - 0610 speed: 480M
Dev (bus 1, device 0): 8086 - 461E speed: 5G
Dev (bus 2, device 15): 0403 - 6001 speed: 12M
Dev (bus 2, device 11): 1A40 - 0101 speed: 480M
Dev (bus 2, device 13): 0403 - 6010 speed: 480M
PS C:\\Users\\qinyunti\\OneDrive\\wuqi\\usb\\libusb\\build\\v143\\x64\\Debug >