本文轉(zhuǎn)自公眾號(hào),歡迎關(guān)注
Windows下基于MSVC搭建libusb開發(fā)環(huán)境 (qq.com)
準(zhǔn)備
官網(wǎng)
https://libusb.info/
源碼
git下載或者官網(wǎng)下載
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下編譯好的庫
官網(wǎng)下可以直接下載Windows下編譯好的開發(fā)包。
Libusb簡(jiǎn)介
跨平臺(tái)建議使用libusb,如果僅在win下可以使用libusbk,實(shí)際上win上libusb也是使用libusbk去調(diào)用內(nèi)核驅(qū)動(dòng),綜合下表,使用libusb開發(fā)是最合適選擇。
Libusb采用LGPL協(xié)議,對(duì)于商業(yè)軟件中使用其作為第三方庫使用,不修改其源碼是合適的,這種情況不需要開源自己的部分。而對(duì)于基于此做二次開發(fā)修改源碼的話,則修改后的代碼需要繼續(xù)符合 LGPL v2.1協(xié)議。
平臺(tái) | 鏈接 | 狀態(tài) | ||
---|---|---|---|---|
libusb | 跨平臺(tái) | https://libusb.info/ | libusb沒有涉及Windows內(nèi)核驅(qū)動(dòng),是一個(gè)用戶空間庫,支持以下內(nèi)核驅(qū)動(dòng)程序: 基本都是通過** libusbK.dll調(diào)用內(nèi)核驅(qū)動(dòng)。lWinUSB.sys無libusbK.dll時(shí):libusb-1.0.dll --> WinUSB.dll --> WinUSB.sys有l(wèi)ibusbK.dll時(shí):libusb-1.0.dll -->libusbK.dll --> WinUSB.dll --> WinUSB.sysllibusbK.sys內(nèi)核驅(qū)動(dòng)libusb-1.0.dll --> libusbK.dll** --> libusbK.sysllibusb0.sys內(nèi)核驅(qū)動(dòng)(不夠完善)libusb-1.0.dll -->libusbK.dll--> libusb0.syslusbdk驅(qū)動(dòng)(不夠完善)lHID驅(qū)動(dòng)(不夠完善),使用HIDAPI 更好 | 活躍原始網(wǎng)站libusb.org不再使用,libusbx原先是libusb的克隆現(xiàn)在已經(jīng)合并到libusb,libusbx.org現(xiàn)在和libusb沒有關(guān)系。 |
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修復(fù)不再更新,跨平臺(tái)建議使用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上即使用該庫調(diào)用內(nèi)核驅(qū)動(dòng)。支持同步傳輸,完全兼容WinUSB的API。 | 活躍 |
openusb | Solaris | https://sourceforge.net/projects/openusb/ | 來源于libusb-1.0 | 最后更新2020年 |
usbdk | 跨平臺(tái) | 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
驅(qū)動(dòng)切換
先下載Zadig用于切換驅(qū)動(dòng)
https://zadig.akeo.ie/
編譯libusb庫
從 https://github.com/libusb/libusb.git下載最新的代碼
進(jìn)入代碼目錄雙擊打開libusb\\msvc\\libusb.sln (注我這里試用MSVC Community 2022)
點(diǎn)擊左側(cè)解決方案,菜單欄生成->生成解決方案
生成的動(dòng)態(tài)庫dll位于libusb\\build\\v143\\x64\\Debug\\dll下 libusb-1.0.dl libusb-1.0.lib
生成的靜態(tài)庫lib位于libusb\\build\\v143\\x64\\Debug\\lib下 libusb-1.0.lib
libusb\\build\\v143\\x64\\Debug下的getopt.lib
libusb\\build\\v143\\x64\\Debug下還生成了很多測(cè)試程序,比如.\\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 >