libusb系列-007-Qt下使用libusb1.0.26源码
libusb系列-007-Qt下使用libusb1.0.26源码
文章目录
- libusb系列-007-Qt下使用libusb1.0.26源码
- 摘要
- 安装编译环境
- 确认需要的文件
- 开始编译
- 错误1:找不到文件
- 错误2:expected
- 错误3:SCM_CREDENTALS
- 错误4:类型冲突
- 错误5 assert断言错误
- 错误6:关于时间的错误
- 测试libusb
- 工程源码
关键字: Debian
、 Linux
、 Qt
、 libusb
、 源码
内容背景:
最近项目终于切到Linux下开发了,所以最近的记录都是发生在
Debian 10
以及Arm Debain 10
下,Qt
版本5.12.3
。这几天真是问题多多,收获满满,不过目前阶段仅仅停留在解决问题,至于原理性的东西,还得慢慢消化。最近好多问题都是直接群里问大神,感谢各位大神助我成长。开始本来USB传世使用的是HIDUSB,后面计划开发一个专用的驱动,到最后,因为最终系统一直定不下来,最终成了使用libusb了。大部分人都是直接使用libusb 的库的,把源码直接放在项目中参与编译的应该很好,哎,我就是那个大冤种,那么请跟随我一起看我如何给自己完坑踩坑吧。
摘要
哎呀,终于轮到我写我踩的大坑了。这里要贴出我领悟到的重大人声哲理。
其实,所谓的困难,都是我们自己。
其实我最开始接触
libusb
的时候,就有把libusb
源码搞进项目里的想法,因为前面使用QCustomPlot库
CJSON库``HUDUSB库
都是直接包含一个头文件和一个源码即可完成源码的引入,那么到libusb
库的时候,我就有了同样的想法了,但是当我打开libusb
库的源码包是,是直接闷逼的状态,所以当场就点击了右上角的X
第二次是尝试编译lib库,结果还是一地鸡毛,找了好几个教程,都是没有成功,所以再次点击右上角的
X
第三次,尝试直接把源码放在Qt里面编译,不错所料,好几百个错误,又一次点击右上角
X
第四次,准备好好研究一番再搞。终于算是成功了吧,1.0.9 顺利整合到源码中,1.0.26 在Demo里面测试可以了初始化USB了,不过我注视掉了部分时间相关的函数,应该会有部分问题,应该还是少了那个库所致,暂时只能到这里,因为我项目中原来使用的库就是1.0.9 所以这源码也是1.0.9 的,保持下一致性。
安装编译环境
这个环节看是很数次,其实就是在第三篇文章libusb系列-003-Linux下libusb源码编译的一部分,因为我们需要通过make 知道linux,需要那些源码。所以需要安装编译环境
sudo apt install -y make dh-autoreconf
sudo apt install -y libudev-dev
确认需要的文件
这里就要切到libusb系列-003-Linux下libusb源码编译,找一张图一下都需要什么文件。
按照上面的内容,把需要的源码文件添加到Qt工程中。
开始编译
接着按照理想的进度,应该是我们点击Qt Creator中的Buil按键,等待绿条走完,就可以了大功告成了,
错误1:找不到文件
命名已经包含了,结果还是找不到文件如下图所示
这个问题其实还是很好解决的,改下包含路径即可。这个步骤需要循环操作好多次,直到没有了对应的报错。
错误2:expected
额,这个错误我也不知道该怎么形容,反正就是好导出宏有关系。如下图所示
因为我们要直接使用源码,没有导出一说了,所以我就把导出宏删除了,这个也要循环操作好多轮,直到没有再说。
错误3:SCM_CREDENTALS
说是这个宏没有定义 SCM_CREDENTALS
这个就要找对应的宏定义,一路找上去,最后会发下如下图所示的定义,所以只需要在对应的宏使用的地方增加一个宏 __USE_GNU_
百度也有其他的方法,我测试不好使,上面是我测试好使的,可能和系统有关。百度内容如下
错误4:类型冲突
这个是翻译过来的,这个问题我到现在其实也没有解决,只是我把对应的实现给注释掉了,具体影响未知,也期待大佬评论区指点一波
报错内容如下
找遍整个项目,也只有3个地方出现,不存在冲突呀
解决这个问题,也尝试过加 extern "C"
,但是无解,报错依旧
错误5 assert断言错误
这个更是找不到解决方法,报错如下,都断言错误。
字面意思都是未定义,但是我真的可以向上找到定义。
所以,我理解的断言就是类似抛出异常被,所以我就不抛出了,直接注释掉。如下图所示
错误6:关于时间的错误
这个同样,我的解决方法就是注释掉使用的地方,这个应该是我没有引用到那个系统的库,应为我跳到对应的函数接口,注释都是写着如果系统不提供,就自己实现他。所以我就注释掉了,但是其实应该是有一个库可以提供这些代码的,示例如下
也是一样,循环操作,直到没有报错,如果到这里,你都解决完了,那么应该就是可以编译过了。
测试libusb
测试代码如下,其实也是就一行
qDebug() << libusb_init(NULL);
测试结果如下
工程源码
Debian 10 下 Qt 5.12.3 使用libusb 1.0.26源码工程示例
那么我注释掉这些东西,不知道对整个库是否有印象,所以还希望大佬们在评论区指正呀。
libusb系列-007-Qt下使用libusb1.0.26源码相关推荐
- Ubuntu12.04下在Android4.0.4源码下载及其编译过程(转载)
一.下载源码 1.下载工具repo:https://android.googlesource.com/tools/repo/ 在本地目录建个bin的文件夹,进入bin文件夹:通过git下载: [cpp ...
- 菜鸟读jQuery 2.0.3 源码分析系列(1)
原文链接在这里,作为一个菜鸟,我就一边读一边写 jQuery 2.0.3 源码分析系列 前面看着差不多了,看到下面一条(我是真菜鸟),推荐木有入门或者刚刚JS入门摸不着边的看看,大大们手下留情,想一起 ...
- Ubuntu12.04下Android4.0.4源码的下载及其编译过程
Ubuntu12.04下Android4.0.4源码的下载及其编译过程 http://www.jizhuomi.com/android/environment/427.html
- android4.0.3源码之硬件gps简单移植
[转]我和菜鸟一起学android4.0.3源码之硬件gps简单移植 2013-7-5阅读94 评论0 关于android定位方式 android 定位一般有四种方法,这四种方式分别是GPS定位.WI ...
- 详解linux下auto工具制作Makefile源码包(制作篇)
2019独角兽企业重金招聘Python工程师标准>>> 详解linux下auto工具制作Makefile源码包(制作篇) 水木杨 一. 概述 为了更好的制作configure ...
- 【转】Ubuntu 14.04.3上配置并成功编译Android 6.0 r1源码
http://www.linuxidc.com/Linux/2016-01/127292.htm 终于成功把Android 6.0 r1源码的源码编译.先上图,这是在Ubuntu中运行的Android ...
- 从路由原理出发,深入阅读理解react-router 4.0的源码
react-router等前端路由的原理大致相同,可以实现无刷新的条件下切换显示不同的页面.路由的本质就是页面的URL发生改变时,页面的显示结果可以根据URL的变化而变化,但是页面不会刷新.通过前 ...
- ubuntu 环境下调试mysql源码_【转】Ubuntu 16.04下 Mysql 5.7.17源码编译与安装
Ubuntu 16.04下 Mysql5.7.17源码编译与安装 系统环境 一. 系统安装条件 1.cmake MySQL使用cmake跨平台工具预编译源码,用于设置mysql的编译参数. sudo ...
- Jmeter-3.0的源码导入eclipse并执行
最近在研究jmeter二次开发,所以需要先jmeter导入Eclipse,后续还需要学习jmeter源码以及二次开发的相关知识,到时候也会分享出来,下面是jmeter导入Eclipse的过程 首先去官 ...
最新文章
- Eclipse java项目转换为web项目
- Linux 系统之虚拟化部署
- c语言数据结构将链串里所有值为x的字符删除_redis数据结构与对象到底长什么样?...
- OxyPlot 导出图片及 WPF 元素导出为图片的方法
- Series和DataFrame、相关性及NaN处理
- jre for mac 删除_在 Mac 的 Docker Desktop 中运行 K8s
- 系统分析师和系统架构设计师难度比较_系统架构设计师,马上开课了!
- [转]iis7.5+win2008 出现 HTTP Error 503. The service is unavailable.
- EOS cleos --skip-transaction-signatures 跳过签名
- vagrant:修改Linux网络设置
- 六自由度机械臂运动学分析及其轨迹规划
- Win8.1 KB2919355更新无法正常安装完成,解决办法?
- java定时任务不执行_【SpringBoot】为什么我的定时任务不执行?
- Java读写gif格式图片,解决ImageIO读取gif文件只读取第一帧的问题(read and write gif format pictures in Java)
- delphi android 升级,delphi android 自动升级
- 软件及其公司篇--项目管理(八)
- 怎样用excel剔除异常数据_excel如何去除异常值?(excel表格数据异常丢失)
- [Excel表格]单元格内换行
- html.dropdownlist 样式,使用@ Html.DropDownList()添加要选择的css类
- 使用beautifulSoup