Windows下基于MSVC搭建libusb开发环境

本文转自公众号,欢迎关注
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
wikihttps://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
安装libusbkhttps://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.exedev (bus 2, device 5): 0bda - 4853 speed: 12mdev (bus 2, device 0): 8086 - 51ed speed: 5gdev (bus 2, device 12): 15ba - 002a speed: 480mdev (bus 2, device 6): 046d - c542 speed: 12mmanufacturer: logitechproduct: wireless receiverdev (bus 2, device 4): 174f - 1811 speed: 480mmanufacturer:product: integrated cameradev (bus 2, device 2): 05e3 - 0612 speed: 5gdev (bus 2, device 14): 0403 - 6001 speed: 12mdev (bus 2, device 16): 16c0 - 05dc speed: 5gmanufacturer: tusb.orgproduct: usb packet viewerdev (bus 2, device 8): 0b95 - 1790 speed: 5gdev (bus 2, device 3): 05e3 - 0610 speed: 480mdev (bus 1, device 0): 8086 - 461e speed: 5gdev (bus 2, device 15): 0403 - 6001 speed: 12mdev (bus 2, device 11): 1a40 - 0101 speed: 480mdev (bus 2, device 13): 0403 - 6010 speed: 480mps c:\\users\\qinyunti\\onedrive\\wuqi\\usb\\libusb\\build\\v143\\x64\\debug >直接下载libusb库可以从官网https://libusb.info/
菜单栏
downloads->latest windows binaries 下载
我这里下载的是最新版libusb-1.0.26-binaries.7z
解压
动态链接库libusb-1.0.26-binaries\\vs2015-x64\\dll下的libusb-1.0.dll和libusb-1.0.lib
静态链接库libusb-1.0.26-binaries\\vs2015-x64\\lib下的getopt.lib和libusb-1.0.lib
在自己的工程中使用工程配置这里使用我们从源码构建的动态链接库的形式,静态链接库一样。
在自己的工程目录中创建libusb目录
创建inc和lib子目录
复制libusb\\libusb下所有头文件到自己工程libusb下的inc目录下
复制libusb\\build\\v143\\x64\\debug\\dll下的 libusb-1.0.dl libusb-1.0.lib,libusb\\build\\v143\\x64\\debug下的getopt.lib到
自己工程libusb下的lib目录下
右键点击工程名->属性
设置头文件包含路径
$(msbuildprojectdirectory)\\src\\libusb\\inc;设置库文件包含路径
$(msbuildprojectdirectory)\\src\\libusb\\lib;
设置要包含的库getopt.lib;libusb-1.0.lib;
测试复制libusb\\examples下的testlibusb.c到自己的工程目录,添加到工程。
生成解决方案
将libusb-1.0.dll复制到exe文件所在目录,然后运行
.\\usb.exe -v可以查看设备的相关信息。


汽车照明系统之汽车前灯设计
PLC控制系统接地怎么设计
波音投资油电混合公司 飞机史或将翻开新篇章
微雪电子LPC CortexM4开发板Core4337简介
MRAM将会成为非易失性存储器(NVRAM)未来的关键性技术
Windows下基于MSVC搭建libusb开发环境
讲述TreeOS物联网终端操作系统诞生的故事
西部数据公司宣布推出新产品满足用户对于高耐久度存储解决方案日益增长的需求
物联网的通讯标准介绍以及短距离无线通信的分析
景旺电子目前在手的订单排产基本到6月,部分已经预定到7月
被动元件大宗品流血竞争,大厂下一步?
数字电位器的内部电路原理图
ARM架构Parker系列将作为下一代无人驾驶汽车核心
使用MM32F3270 FSMC驱动TFT-LCD
医疗器械行业高值医用耗材市场发展概况
等离子电视的技术指标以及优点详解
一种最新改进嵌入Linux实时性的新型方案
MOS管选择注意事项
计算机在看图的时候,图像识别在看什么?
电磁继电器怎么接线_14脚电磁继电器接线图