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 >