【RK3568 嵌入式linux QT开发笔记】 二维码开源库 libqrencode 交叉静态编译和使用

本文参考文章:https://blog.csdn.net/qq_41630102/article/details/108306720
参考文章有些地方描述的有疏漏,导致笔者学习过程中,编译的.a文件无法在RK3568平台运行,故写本文做了修正,以下仅是自我学习的笔记,没有写的很详细。

一:下载软件包

https://download.csdn.net/download/qq_41630102/12781129

二:编译

2.1编译zlib

参考文章:https://blog.csdn.net/qq_41630102/article/details/108306720

2.2编译 libpng

export CROSS_COMPILE=aarch64-buildroot-linux-gnu-
export CC= C R O S S C O M P I L E g c c e x p o r t A R = {CROSS_COMPILE}gcc export AR= CROSSCOMPILEgccexportAR={CROSS_COMPILE}ar

export PATH=/opt/atk-dlrk356x-toolchain/usr/bin:$PATH
./configure --prefix=/home/alientek/QT_PRO/QRCODE/b/libpng-1.6.17/compile_dir/ --host=aarch64-buildroot-linux-gnu CC=aarch64-buildroot-linux-gnu-gcc AR=aarch64-buildroot-linux-gnu-ar LIBS=-L/home/alientek/QT_PRO/QRCODE/zlib-1.2.11/compile CPPFLAGS=-I/home/alientek/QT_PRO/QRCODE/zlib-1.2.11/compile

make && make install

2.3编译 libqrencode

export CROSS_COMPILE=aarch64-buildroot-linux-gnu-
export CC= C R O S S C O M P I L E g c c e x p o r t A R = {CROSS_COMPILE}gcc export AR= CROSSCOMPILEgccexportAR={CROSS_COMPILE}ar

export PATH=/opt/atk-dlrk356x-toolchain/usr/bin:$PATH

./configure --prefix=/home/alientek/QT_PRO/QRCODE/qrencode-3.4.4/compile_dir/ --host=aarch64-buildroot-linux-gnu CC=aarch64-buildroot-linux-gnu-gcc AR=aarch64-buildroot-linux-gnu-ar --enable-static --disable-shared CPPFLAGS=-I/home/alientek/QT_PRO/QRCODE/b/libpng-1.6.17/compile_dir/include LDFLAGS=-L/home/alientek/QT_PRO/QRCODE/b/libpng-1.6.17/compile_dir/lib

make && make install

三、QT中使用

3.1将.a文件和.h文件放在QT目录中

在这里插入图片描述

3.2修改QT 的 .pro文件

加入

INCLUDEPATH += $$PWD/qrencode_rk
DEPENDPATH += $$PWD/qrencode_rk
LIBS += -L$$PWD/qrencode_rk -lqrencode

在这里插入图片描述

3.3 使用qrencode库(代码示例)

#include "w004_choose_auth_mode.h"
#include "ui_w004_choose_auth_mode.h"
#include <qrencode.h>
#include <QPainter>
#include <QPixmap>w004_choose_auth_mode::w004_choose_auth_mode(QWidget *parent): QWidget(parent), ui(new Ui::w004_choose_auth_mode)
{ui->setupUi(this);QLabel *bgLabel = new QLabel(this);bgLabel->setPixmap(QPixmap(":/image/background/004.png"));bgLabel->setScaledContents(true); // 图片自适应缩放bgLabel->lower(); // 置于底层generateQR("QR TEST");
}w004_choose_auth_mode::~w004_choose_auth_mode()
{delete ui;
}void w004_choose_auth_mode::on_pushButton_language_clicked()
{emit btnpush(4,100);  // 发射返回信号
}void w004_choose_auth_mode::generateQR(QString text )
{if (text.isEmpty()) return;// 生成二维码数据QRcode *qrCode = QRcode_encodeString(text.toUtf8(), 2, QR_ECLEVEL_Q, QR_MODE_8, 1);if (!qrCode) return;// 转换为 QImageint scale = 5;  // 缩放因子int imgSize = qrCode->width * scale;QImage image(imgSize, imgSize, QImage::Format_RGB32);image.fill(Qt::white);QPainter painter(&image);painter.setPen(Qt::NoPen);painter.setBrush(Qt::black);// 绘制二维码模块for (int y = 0; y < qrCode->width; y++) {for (int x = 0; x < qrCode->width; x++) {if (qrCode->data[y * qrCode->width + x] & 1) {painter.drawRect(x * scale, y * scale, scale, scale);}}}// 显示到 QLabelui->label_qrcode->setPixmap(QPixmap::fromImage(image));QRcode_free(qrCode);  // 释放内存
}

3.4 测试结果

在这里插入图片描述
在这里插入图片描述

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

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

相关文章

git本地裸仓库的“激活”:在同一台 Linux 服务器上创建工作区

大家好&#xff01;在之前的文章中&#xff0c;我们探讨了 Git 裸仓库&#xff08;Bare Repository&#xff09;的概念&#xff0c;它是没有工作目录&#xff0c;只包含 .git 目录内容的特殊仓库格式&#xff0c;非常适合作为中心化的代码集散地或备份。我们也了解了 git clone…

如何排查在docker中运行软件的故障:Docker故障排查可视化指南,三招锁定问题根源

很多刚接触Docker的朋友常觉得故障排查很神秘。其实只需关注CPU、内存、磁盘这三大资源指标&#xff01;Linux终端虽强大但不够直观&#xff0c;下面教你用可视化工具轻松监控&#xff1a; 一、宿主机全局监控&#xff1a;FinalShell 掌控全局 连接宿主机 打开FinalShell&…

【论文笔记】【强化微调】T-GRPO:对视频数据进行强化微调

tulerfeng/Video-R1: Video-R1: Reinforcing Video Reasoning in MLLMs [&#x1f525;the first paper to explore R1 for video] 1. 引述 在强化微调中&#xff0c;像 GRPO、DAPO 这样的方法都是对文本或者图片进行微调思考&#xff0c;所以这类微调方法不对时序信息做处理&…

【Unity】动画系统

0 前言 早些时间学动画系统时的笔记&#xff0c;实际还没学完&#xff0c;后续计划会慢慢补全吧。 1 动画 通常来说动画都是动画师来做的&#xff0c;不过Unity也能实现简单的动画效果。PS&#xff1a;官方文档中&#xff0c;将动画称之为动画剪辑。 1.1 创建动画 首先在Unit…

C++二级指针的用法指向指针的指针(多级间接寻址)

指向指针的指针是一种多级间接寻址的形式&#xff0c;或者说是一个指针链。 指针的指针就是将指针的地址存放在另一个指针里面。 通常&#xff0c;一个指针包含一个变量的地址。当我们定义一个指向指针的指针时&#xff0c;第一个指针包含了第二个指针的地址&#xff0c;第二个…

【格与代数系统】示例

【格与代数系统】格与代数系统汇总 例1 设是由诱导的代数系统&#xff0c;则其上的二元运算满足&#xff08;ABCD&#xff09; A. B. C. D. 代数系统满足交换律、幂等律、吸收律、结合律 例2 是&#xff08;ABCD&#xff09; A.有界格 有界格&#xff1a;有最大、最小元…

Stable Diffusion 项目实战落地:手机壁纸制作-第一篇 从零基础到生成艺术品的第一步!

大家好!欢迎来到《StableDiffusion实战-手机壁纸制作》系列的第一篇! 在这一篇文章里,我们将一起探索如何用StableDiffusion(SD)这款强大的工具,快速制作出炫酷的手机壁纸。 如果你对生成艺术、AI绘图感兴趣,那你一定不能错过! 你能做什么?你将做什么! 在之前的系…

WEB3开启 Hardhat 自动验证有什么意义

这是个非常好的问题&#xff0c;尤其是你在学习 Web3 后端开发时&#xff0c;理解为什么要启用 Hardhat 自动验证合约源码&#xff0c;会让你开发流程更完整、更专业。 ✅ 一句话总结&#xff1a; 开启 Hardhat 自动验证的意义是&#xff1a;让你的合约在区块链浏览器&#xff…

Qt窗⼝的学习(一)

Qt窗⼝是通过QMainWindow类来实现的。 QMainWindow是⼀个为⽤⼾提供主窗⼝程序的类&#xff0c;继承⾃QWidget类&#xff0c;并且提供了⼀个预定义的 布局。QMainWindow包含⼀个菜单栏&#xff08;menubar&#xff09;、多个⼯具栏(toolbars)、多个浮动窗⼝&#xff08;铆 接部…

C++ 面试题常用总结 详解(满足c++ 岗位必备,不定时更新)

&#x1f4da; 本文主要总结了一些常见的C面试题&#xff0c;主要涉及到语法基础、STL标准库、内存相关、类相关和其他辅助技能&#xff0c;掌握这些内容&#xff0c;基本上就满足C的岗位技能&#xff08;红色标记为重点内容&#xff09;&#xff0c;欢迎大家前来学习指正&…

git提交的脚本无执行权限怎么办

问题描述 自己写的小项目&#xff0c;没有在服务器安装 Jenkins 进行项目部署&#xff0c;为了图方便&#xff0c;在项目中编写了一个 deploy.sh 脚本文件用来执行项目部署。但是在服务器上 pull 下来之后发现脚本文件没有执行权限&#xff0c;通过 chmod 命令进行赋权&#x…

004.chromium编译进阶-启动时传入cookies

一、目标&#xff1a; 实现传入参数--set-cookies[{"domain":"https://baidu.com","name":"AAAA","value":"111"},{"domain":"https://baidu.com","name":"BBB","…

【数据库复习】

数据库复习题 一、填空题1&#xff0e;数据库系统一般由&#xff08;数据库&#xff09;、应用系统、&#xff08;数据库管理系统&#xff09;、&#xff08;数据库管理员&#xff09;和用户构成。2&#xff0e;数据模型通常由&#xff08;数据结构&#xff09;、&#xff08;数…

微信小程序:选择页面单选实现(多页面均可选择)

一、效果展示 1、主页面 展示了两个选择行 2、选择页面 根据传递的参数决定员工展示的数据,并且单选,可将数据传递给主页面 二、主页面实现 1、视图层 写入了采购员和库管员的行选择信息 <view class="item flex flex-between"><view class="i…

使用docker-compose搭建redis-cluster集群

前言 如果你也因为centos的gcc版本落后导致redis编译安装不通过而烦恼&#xff0c;大可以试一试用docker去搭建redis集群。本文以单节点搭建redis-cluster三主三从为例。 ip&#xff1a;192.168.0.10redis信息&#xff1a; 客户端连接端口&#xff1a;7001 -7006集群间通信端…

【LLaMA-Factory 实战系列】二、WebUI 篇 - Qwen2.5-VL 多模态模型 LoRA 微调保姆级教程

【LLaMA-Factory 实战系列】二、WebUI 篇 - Qwen2.5-VL 多模态模型 LoRA 微调保姆级教程 1. 引言1.1 为什么选择 Qwen2.5-VL-3B-Instruct&#xff1f;1.2 环境要求 2. 环境搭建2.1 安装 LLaMA-Factory2.2 验证安装 3. 数据集准备与配置3.1 数据集结构3.2 数据格式3.3 数据集声明…

风险矩阵与灰色综合评价

一、风险矩阵&#xff08;Risk Matrix&#xff09; 1. 定义与原理 定义&#xff1a;风险矩阵是一种通过二维网格&#xff08;可能性 vs. 后果严重程度&#xff09;可视化展示风险等级的工具&#xff0c;用于优先级排序和决策支持。核心要素&#xff1a; 横轴&#xff08;X轴&…

谷歌浏览器电脑版官方下载- Google Chrome官方网页版入口

谷歌浏览器&#xff08;Google Chrome&#xff09;是一款由谷歌公司开发的免费网页浏览器&#xff0c;自2008年首次发布以来&#xff0c;迅速成为全球最受欢迎的浏览器之一。它以简洁的界面设计、快速的浏览速度和强大的安全性能而闻名。谷歌浏览器支持多种操作系统&#xff0c…

垂直电商供应链平台:重构产业生态,驱动数字化增长

垂直电商供应链平台&#xff1a;重构产业生态&#xff0c;驱动数字化增长 在电商行业竞争日益激烈的当下&#xff0c;垂直电商供应链平台凭借对细分领域的深度聚焦与数字化能力&#xff0c;成为产业升级的关键引擎。本文围绕垂直电商供应链平台的架构、价值及生态构建展开&…

VSCode 插件 Remote - SSH:开启高效远程开发之旅

在当今的软件开发领域&#xff0c;远程开发已经成为了一种越来越流行的工作方式。无论是分布式团队协作&#xff0c;还是需要在不同环境中进行开发&#xff0c;远程开发都能为开发者带来极大的便利。而 VSCode 的 Remote - SSH 插件&#xff0c;就是一款能够帮助开发者实现高效…