LibUSB-Win32 在Windows7上使用vs2010编译过程

LibUSB-Win32是一个用于Windows操作系统(Win98SE、WinME、Win2k和WinXP、Vista、Win7等)上的通用USB设备驱动程序。该驱动程序允许使用者在不写任何一行核心驱动程序代码的情况下,可以访问Windows系统上的任意一个USB设备,具有以下特点:

?  能够与任意一个已安装的USB设备进行通信

?  可被用作自己开发的USB设备的驱动程序

?  支持批量和中断传输

?  支持USB规范中定义的所有标准设备请求

?  支持USB设备制造商的自定义请求

通过使用几个函数,就可以与USB设备进行简单通信了,通信的主要流程可分为以下四步:

1) 调用usb_init函数,进行初始化。

2) 打开要进行通信的USB设备的句柄。首先依次调用usb_find_busses、usb_find_devices和usb_get_busses这三个函数,获得已找到的USB总线序列;然后通过链表遍历所有的USB设备,根据已知的要打开USB设备的ID(VID/PID),找到相应的USB设备;最后调用usb_open函数打开该USB设备(在这里假设总线上没有相同VID和PID的USB设备。如果总线上存在着相同VID和PID的设备,还需要进行其他条件判断,比如设备名称,以保证是打开的是期望的USB设备)。

3) 与USB设备进行通信。使用usb_control_msg函数,向USB设备读取数据或写入数据。

4) 关闭USB设备。完成所有操作后,调用usb_close函数关闭已经打开的USB设备。

编译工具:VS2010和WINDDK,可以去官网上直接下载源码,地址是http://sourceforge.net/projects/libusb-win32/files/,下载的最新版本为libusb-win32-src-1.2.6.0。VS2010用来编译libusb-win32的动态链接库、相关工具和DEMO程序的。我们还需要WINDDK来编译驱动,即生成libusb0.sys文件。从官方提供的make.cfg文件上来看,使用的是WINDDK
7600.16385.0(WINDOW XP及以上版本) WINDDK 6001.18002(WINDOWS 2000及以下版本)。此处用的是 WINDDK 7600.16385.1,打开源码中的工程文件如下图所示:

inf-wizard——设备驱动安装信息文件生成向导。此向导可以扫描计算机上的USB设备,并可以获取你选择的设备的VID及PID生成inf文件。

install-filter——filter驱动安装。

libusb-dll——动态链接库,生成libusb0.dll。上面说的“7个函数”就封装在这里面。同时生成了libusb0.lib文件,供程序链接,实现libusb0.dll的装载。

libusb-sys——USB驱动,生成驱动文件libusb0.sys。注意它是makefile项目。

testbulk——libusb-win32的 ”Hello,World!“。

testlibusb——实现libusb-win32驱动的设备的遍历并打印一部分设备描述信息。

testlibusb-win——WINFORM版的testlibusb。

编译工程,没有报错,但libusb-sys生成目录下也没有libusb0.sys文件,libusb-sys是靠WINDDK来编译链接的。

查看libusb-sys的项目属性页,在[配置属性]的栏里,查看“生成命令行”。

CD"$(ProjectDir)..\ddk_make"

CMD /C make.cmd"arch=x86" "app=driver" "noclean=true""outdir=$(OutDir)" "DIR_INTERMEDIATE=$(IntDir)""debugmode=true"

查看目录下的make.cfg文件。

; Default WinDDKdirectory(s) Adjust these values to match your environment

; (REQUIRED)

WINDDK_BASE=Z:\WinDDK

WINDDK_DIR=!WINDDK_BASE!\7600.16385.0\

;

; (optional)

WINDDK_W2K_DIR=!WINDDK_BASE!\6001.18002\

把这两项改成你的WINDDK安装路径。

; Default WinDDKdirectory(s) Adjust these values to match your environment

; (REQUIRED)

WINDDK_BASE=D:\WinDDK

WINDDK_DIR=!WINDDK_BASE!\7600.16385.1\

编译一下libusb-sys。

编译报错error MSB3073: ,修改ddk_make/make.cmd,Line175 W2K(末尾) 修改成WIN7,编译成功。

然后编译libwdi,老是报错error MSB3073,网上查了半天资料都没有解决办法,最终找到问题原因,所包含的文件没有放置在对应位置。

从编译的libusb-win32-src-1.2.6.0(可以从http://sourceforge.net/apps/trac/libusb-win32/wiki下载)中复制对应文件到E:/libusb-win32,注意目录是E:\libusb-win32\bin\x86,对应修改config.h的目录路径如下:

/* embed WinUSB driver files from thefollowing DDK location */

#ifndef DDK_DIR

#define DDK_DIR
"D:/WinDDK/7600.16385.1"

#endif

/* embed libusb0 driver files from thefollowing location */

#ifndef LIBUSB0_DIR

#define LIBUSB0_DIR
"E:/libusb-win32"

#endif

然后inf-wizard工程编译又出现问题,error LNK2019: 无法解析的外部符号,通过添加编译生成的libwdi .lib到工程路径中即可解决,最终编译完成整个项目。

编译过程参考如下文章:

http://www.amobbs.com/archiver/tid-4096300.html

http://blog.csdn.net/hbsong75/article/details/12841301

http://m.blog.csdn.net/blog/whw8007/38895073

时间: 2024-12-18 06:54:42

LibUSB-Win32 在Windows7上使用vs2010编译过程的相关文章

Windows7上用VS编译本地使用的live555

本文链接:https://www.jianshu.com/p/6ea100865744 环境 系统:Windows7 SP1 64位 编辑器:Visual Studio Community 2017 Live555:2018-01-24 准备工作 下载源码 http://www.live555.com/liveMedia/public/ 下载live555-latest.tar.gz,我的是2018-01-24版本 下载VS https://www.visualstudio.com/zh-han

vs2010 编译mosquitto win32版本,开启websockets,实现消息推送

前言:因为之前没有怎么碰vs,只搞过cygwin,而cygwin上搞了好久都搞不定,以至于重新整理思路,这window上的版本应该怎么去编译.一直不知道怎么搞,只能边看其他教程,边自己搞着,连续几天下了班就可以研究编译,特别是在开启websockets的时候,加上libwebsockets库,对于小白来说,特别痛苦.也罢,最后也成功编译. 编译的电脑:MacBook Pro 虚拟机win7,64bit,1.5G的内存 参考:http://blog.csdn.net/Netown_Ethereal

在Windows7上搭建Cocos2d-x win32开发环境

很多其它相关内容请查看本人博客:http://www.bokeyi.com/ll/category/cocos2d-x/ 建议:为了避免安全相关的问题,请以管理员权限执行全部的操作,当执行命令的时候,也要确保之前是以管理员权限打开了命令行窗体. 工具准备 搭建开发环境须要安装工具包含 Visual Studio 2013 (2012或2010也能够) python ---(本教程以python2.7.5版本号为例),下载地址:http://www.python.org/download/rele

使用VS2008,VS2010编译64位的应用程序

要编译生成64位的应用程序,就必须把vs2008,或vs2010的配置管理器设置为x64. 如果你的配置管理器那里没有x64这个选项,那么是你在安装vs时可能没有安装这个组件.你不用卸载vs,只需打开你原来的安装包,安装上X64的编译.链接组件等即可.(就是在功能选择里,在VC++节点下,要选择X64编译器和工具.) 使用 x64 编译器和工具可以在 Win32 或 Win64 平台上开发 64 位应用程序. 这包括编译器:链接器:包括头文件和源代码的 C 运行时库.MFC.ATL 和标准模板库

win7下vs2010编译使用静态和动态库

知识补充: sqlite3.dll动态链接库,它允许程序共享执行特殊任务所必需的代码和其他资源. 动态的sqlite3.lib相当于一个h文件,是对实现部分(.dll文件)的导出部分的声明.编译后只是将导出声明部分编译到宿主程序中,其生成的sqlite3.exe在运行时需要相应的dll文件支持 . 静态的sqlite3.lib将导出声明和实现都放在lib中.编译后所有代码都嵌入到宿主程序,其生成的sqlite3.exe可直接运行. 任务: 一.使用VS2010编译sqlite3,生成动态的sql

在VS2012下不安装VS2010编译VS2010的工程

虽然一路追随这VISUAL SUTDIO在编程,但是断档的情况还是有的,最近一次硬盘问题使得安装了所有的VS2003-VS2012的机器硬盘挂了,无奈只能够安装了,不过觉得没啥用了,就安装一个VS2012不就OK了嘛,不过因为VS2012对VS2010完美支持vcxproj,使得完全可能在VS2012中编译VS2010的工程,但是必须安装IDE,这太麻烦了,有人也提出了不安装VS2010进行工程编译的想法,不过最后也没有得出结论. 之前也有过研究,发现MSBUILD进行编译的需要一套“规则”,都

VS2010编译Qt5.4.0静态库

http://www.kavenblog.com/?p=375 1.Qt的跨平台十分优秀,但是在Windows上是还是会有许多问题,其中之一就是动态链接库的问题,Qt程序的发布必须带一个体积不小的DLL库,这十分不方便.当然,如果是程序员之间会比较方便,如果别人的机子也安装了Qt,并且设置了环境变量,那么也可以不将公共的DLL附在发布的程序中.但是,这样显然还是不方便. 2.静态链接库很好的解决了这一个问题,下面就来详细叙述如何编译Qt5.4.0的静态库. 3.参考链接:http://blog.

windows7下cygwin+vs2013编译webkit源码

先下载源码和其他依赖,然后准备cygwin的环境,安装vs2013,最后编译即可.网上没有能直接用于最新版本源码编译的教程,所以我在编译过程中也遇到了很多坑.回过头来看,这些坑都是可以避免的,想要自己尝试编译的同学,可以根据本文快速的实现自己编译webkit(~除去下载文件的时间,15分钟准备环境,1小时编译完成). 下载最近源码 最近的下载版本和源码在这里: http://nightly.webkit.org/ 我使用的源码是这个版本built on 13 October 2014 and i

亲测VS2010纯静态编译QT4.8.0,实现VS2010编译调试Qt程序,QtCreator静态发布程序(图文并茂,非常详细)

下载源代码,注意一定是源码压缩包如qt-everywhere-opensource-src-4.8.0.zip,不是Qt发布的已编译的不同版本的标准库如qt-win-opensource-4.8.0-vs2010.exe,这些版本都只是动态编译的,不是我们所需要的.只有用源码包才能做真正的纯静态编译,如果用Qt官网已编译的标准库.exe文件进行编译,有可能出现各种错误,而且编译后的文件巨大,我当时就在这里绕了很大的弯子,请童鞋们注意啦!!可能有些老鸟会笑话,但我本着最严肃的态度告诉菜鸟们,上网查