libusb系列-007-Qt下使用libusb1.0.26源码

news2025/8/1 19:02:18
头图

libusb系列-007-Qt下使用libusb1.0.26源码

文章目录

  • libusb系列-007-Qt下使用libusb1.0.26源码
    • 摘要
    • 安装编译环境
    • 确认需要的文件
    • 开始编译
      • 错误1:找不到文件
      • 错误2:expected
      • 错误3:SCM_CREDENTALS
      • 错误4:类型冲突
      • 错误5 assert断言错误
      • 错误6:关于时间的错误
    • 测试libusb
    • 工程源码

关键字: DebianLinuxQtlibusb源码

内容背景:

最近项目终于切到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源码编译,找一张图一下都需要什么文件。

image-20221021222241205

按照上面的内容,把需要的源码文件添加到Qt工程中。

image-20221022162016507

开始编译

接着按照理想的进度,应该是我们点击Qt Creator中的Buil按键,等待绿条走完,就可以了大功告成了,

错误1:找不到文件

命名已经包含了,结果还是找不到文件如下图所示

image-20221022162308439

这个问题其实还是很好解决的,改下包含路径即可。这个步骤需要循环操作好多次,直到没有了对应的报错。

错误2:expected

额,这个错误我也不知道该怎么形容,反正就是好导出宏有关系。如下图所示

image-20221022180330012

因为我们要直接使用源码,没有导出一说了,所以我就把导出宏删除了,这个也要循环操作好多轮,直到没有再说。

错误3:SCM_CREDENTALS

说是这个宏没有定义 SCM_CREDENTALS

image-20221022180749034

这个就要找对应的宏定义,一路找上去,最后会发下如下图所示的定义,所以只需要在对应的宏使用的地方增加一个宏 __USE_GNU_

image-20221022180824380

image-20221022181022107

百度也有其他的方法,我测试不好使,上面是我测试好使的,可能和系统有关。百度内容如下

image-20221022181038355

错误4:类型冲突

这个是翻译过来的,这个问题我到现在其实也没有解决,只是我把对应的实现给注释掉了,具体影响未知,也期待大佬评论区指点一波

报错内容如下

image-20221022181233748

找遍整个项目,也只有3个地方出现,不存在冲突呀

image-20221022181305777

解决这个问题,也尝试过加 extern "C",但是无解,报错依旧

image-20221022181349868

错误5 assert断言错误

这个更是找不到解决方法,报错如下,都断言错误。

image-20221022181439909

字面意思都是未定义,但是我真的可以向上找到定义。

image-20221022181530919

所以,我理解的断言就是类似抛出异常被,所以我就不抛出了,直接注释掉。如下图所示

image-20221022181620206

错误6:关于时间的错误

这个同样,我的解决方法就是注释掉使用的地方,这个应该是我没有引用到那个系统的库,应为我跳到对应的函数接口,注释都是写着如果系统不提供,就自己实现他。所以我就注释掉了,但是其实应该是有一个库可以提供这些代码的,示例如下

image-20221022181833584

也是一样,循环操作,直到没有报错,如果到这里,你都解决完了,那么应该就是可以编译过了。

测试libusb

测试代码如下,其实也是就一行

image-20221023095843836

 qDebug() << libusb_init(NULL);

测试结果如下

image-20221023095811017

工程源码

Debian 10 下 Qt 5.12.3 使用libusb 1.0.26源码工程示例

那么我注释掉这些东西,不知道对整个库是否有印象,所以还希望大佬们在评论区指正呀。


博客签名2021

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/16133.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

低代码平台和无代码平台有什么区别

低代码&#xff08;LowCode&#xff09;/无代码(NoCode)”是技术界近几年的热门词汇之一&#xff0c;随着企业数字化发展的深入&#xff0c;越来越多的场景化需求要求企业具备更加灵活敏捷的应用开发能力&#xff0c;传统应用开发模式周期长、技术人员能力要求高&#xff0c;无…

OWASP API SECURITY TOP 10

目录 1. API 安全风险 2. 细说TOP10 1. Broken Object Level Authorization 2. Broken User Authentication 3 Excessive Data Exposure 4 Lack of Resources & Rate Limiting 5 Broken Function Level Authorization 6 Mass Assignment 7 security misconfigura…

redis哨兵系列1

需要配合源码一起康~ 9.1 哨兵基本概念 官网手册yyds&#xff1a;https://redis.io/docs/manual/sentinel/ redis主从模式&#xff0c;如果主挂了&#xff0c;需要人工将从节点提升为主节点&#xff0c;通知应用修改主节点的地址。不是很友好&#xff0c;so Redis 2.8之后开…

同花顺_代码解析_技术指标_EJK

本文通过对同花顺中现成代码进行解析&#xff0c;用以了解同花顺相关策略设计的思想 目录 EMV ENV EXPMA JF_ZNZX KD KDJ KDJFS EMV 简易波动指标 1.EMV 由下往上穿越0 轴时&#xff0c;视为中期买进参考信号&#xff1b; 2.EMV 由上往下穿越0 轴时&#xff0c;视为中…

根据以下电路图,补全STM32F103RCT6的IO口初始化程序

void KEY_Init(void)//接按键的端口初始化程序 { RCC->APB2ENR|______________; //使能PORTA时钟 JTAG_Set(SWD_ENABLE); GPIOA->CRL&__________________; // PA3设置成下拉输入 GPIOA->CRL|__________________; } void LED_Init(void)//接LED的端…

【Qt】控件探幽——QLineEdit

注1&#xff1a;本系列文章使用的Qt版本为Qt 6.3.1 注2&#xff1a;本系列文章常规情况下不会直接贴出源码供复制&#xff0c;都以图片形式展示。所有代码&#xff0c;自己动手写一写&#xff0c;记忆更深刻。 本文目录QLineEdit探幽1、设置数据/获取数据2、只读&#xff08;re…

【15-项目中服务的远程调用之OpenFeign订单模块与商品模块集成使用OpenFeign的案例】

一.知识回顾 【0.三高商城系统的专题专栏都帮你整理好了&#xff0c;请点击这里&#xff01;】 【1-系统架构演进过程】 【2-微服务系统架构需求】 【3-高性能、高并发、高可用的三高商城系统项目介绍】 【4-Linux云服务器上安装Docker】 【5-Docker安装部署MySQL和Redis服务】…

【面试题】圣杯布局和双飞翼布局

圣杯布局和双飞翼布局的特点&#xff1a; 三栏布局&#xff0c;中间一栏最先加载和渲染&#xff08;内容最重要&#xff09;两侧内容固定&#xff0c;中间内容随着宽度自适应一般用于PC页面 圣杯布局和双飞翼布局的实现方式&#xff1a; 使用float布局两侧使用margin负值&am…

git 、gitLub 提交后查看显示全部删除又全部新增

问题&#xff1a; git提交后删除的行数与增加的行数一样&#xff0c;没有修改git也会去全部删除又全部新增 大概是下面你这个样子&#xff1a; 原因&#xff1a; 换行符的原因&#xff0c;win、mac、linux/Unix 换行符是不一样的&#xff0c;提交的文件换行符和git服务器的不…

【Unity300个技巧】牛顿的学问!如何优雅地使用力?

Unity 提供了一个完备且强大物理引擎。但在刚接触的时候&#xff0c;你可能会对它与现实物理规律对应有一些疑惑。 比如&#xff1a; 现实中 1N 的力在 Unity 中怎么表现&#xff1f;Unity 中物体的质量是计算的&#xff1f;Unity 中给物体添加力的方法是 rb.AddForce()&#x…

ICME 论文Latex模版要求

2023年模版获取链接&#xff1a; 链接: https://pan.baidu.com/s/1Hjk4nnybQN6LE23SGfbxKQ 提取码: 27dj --来自百度网盘超级会员v4的分享 论文写作要求&#xff1a; 所有手稿必须是英文的&#xff1b; 论文长度不应超过6页&#xff0c;包括所有文本、图形和参考文献&#…

Qt 设置CPU亲缘性,把进程和线程绑定到CPU核心上(Linux)

Qt 设置CPU亲缘性&#xff0c;把进程和线程绑定到CPU核心上(Linux) 文章目录Qt 设置CPU亲缘性&#xff0c;把进程和线程绑定到CPU核心上(Linux)摘要1 什么是CPU亲缘性2 目的3 API 介绍3.1 进程绑定到CPU3.2 线程绑定到CPU4 实际操作4.1 实操代码主进程串口线程USB线程程序运行资…

iOS开发M1芯片遇到的问题

pod失败执行&#xff1a; sudo arch -x86_64 gem install ffi Then arch -x86_64 pod install M1芯片的Mac无法在模拟器上运行项目building for iOS Simulator或could not find module for target.. 真机上可运行&#xff0c;模拟器上不行&#xff0c;并出现以下错误&#xf…

高级UI之贝塞尔曲线

前言 相信很多同学都知道“贝塞尔曲线”这个词&#xff0c;我们在很多地方都能经常看到。但是&#xff0c;可能并不是每位同学都清楚地知道&#xff0c;到底什么是“贝塞尔曲线”&#xff0c;又是什么特点让它有这么高的知名度。 贝塞尔曲线的数学基础是早在 1912 年就广为人…

八款流行无线黑客工具,非常实用

1、Aircrack Aircrack是最受欢迎的无线密码破解工具之一&#xff0c;可用于802.11a / b / g WEP和WPA破解。Aircrack使用的算法是通过捕获数据包来恢复无线密码。收集到足够的数据包后&#xff0c;它会尝试恢复密码。为了使攻击更快&#xff0c;它通过一些优化实现标准的FMS攻…

腾格尔和黑鸭子,演唱《遥远的地方》不同版本,哪首歌更值得期待

说起中国华语乐坛的音乐人&#xff0c;腾格尔老师算比较出名的一位&#xff0c;听说最近他又推出了一首新歌。《遥远的地方》这首歌曲&#xff0c;就是腾格尔老师的新歌&#xff0c;可能很多人会对这个歌名感到有些熟悉。 早在九十年代的时候&#xff0c;中国华语乐坛非常流行组…

【雷神笔记本快捷键】雷神笔记本FN功能快捷键大全以及电脑CPU处于低功耗但电脑风扇高速转动噪音较大解决方案

雷神笔记本FN功能快捷键大全以及电脑CPU处于低功耗但电脑风扇高速转动噪音较大解决方案。 本计算机有16个功能键盘。这些键的功能因应用程序而异。 请参阅软件文档以了解各个键的使用方法。 【FN】键提供便携式电脑的扩展功能,始终与另一按键搭配使用。‘【FNEsc】:启用或禁用…

教你如何使用 Visual Studio IDE 正确的进行 C++ 桌面开发

目录 先决条件 入门 一、演练&#xff1a;使用项目和解决方案 (C) 准备工作 创建项目 在 Visual Studio 中创建项目 组织项目和文件 向项目添加类 向主函数添加测试代码 向项目添加测试代码 生成并运行应用项目 生成并运行此项目 二、演练&#xff1a;生成项目 (C…

改良海量数据存储的若干的手段-转变数据垃圾为黄金

教材篇 直到翻看了后面章节&#xff0c;才注意到封面上面的标语&#xff0c;中文意思是“禁止倾倒数据垃圾&#xff0c;违者务必读此书&#xff01;” 大致祖师爷对杂乱无序的数据垃圾深恶痛绝&#xff0c;在这点上大凡上了点年头的数据工作者都是深有体会~ 直到翻看了后面章…

三相和单相智能微型断路器功能有区别吗?

安科瑞 华楠 ASCB1系列智能微型断路器是安科瑞电气股份有限公司全新推出的智慧用电产品&#xff0c;产品由智能微型断路器与智能网关两部分组成&#xff0c;可用于对用电线路的关键电气因素&#xff0c;如电压、电流、功率、温度、漏电、能耗等进行实时监测&#xff0c;具有远程…