当前位置: 首页 > news >正文

一文带你为PySide6编译MySQL插件驱动

1.概述

最近使用PySide6开发程序,涉及与MySQL的数据交互。但是qt官方自pyqt5.12(记不太清了)以后不再提供MySQL的插件驱动,只能自己根据qt的源码编译。不过网上大部分都是qt5的MySQL驱动的编译教程。后来搜到了一个qt6的编译教程:

PySide6程序打包后无法运行 no Qt platform plugin could be initialized_space9bug的博客-CSDN博客

尝试过了基本可以使用,大家可跳转参考。这里记录一下我自己踩的坑。

那就是安装的pyside6版本要和你用来编译的qt源码对应,否则会报错driver not loaded,截图如下:

引起上述截图错误的pyqt配置是:PySide6版本是6.4.1,而我用来编译MySQL驱动的qt源码是6.4.2,因而出错。解决的办法其实已经出来了,要么切换PySide6的版本为6.4.2,要么拿Qt6.4.1的源码来编译。

我切换PySide6的版本到6.4.2之后,不再报上述的错误。我一开始尝试找Qt6.4.1的源码,不过官方没有提供这个版本的源码(也许是我自己无能找不到)。截图如下:

上图是Qt官方提供的在线安装程序,可以看出没有Qt6.4.1的选项。 

大家安装的时候,选择“Sources”就会在安装目录下找到Qt的源码:

 

2.CMAKE生成VS项目文件

既然是笔记,那我还是啰嗦一下,万一前面那个链接删帖了呢,后面就麻烦了。

我的编译环境:

(1)操作系统:Win11 64位系统;

(2)MySQL:8.0.31 64位;

(3)CMAKe:3.25.1;

(4)Microsoft Visual Studio Community 2019 :16.11.23

具体步骤如下:

Step1:打开CMAKE,如下图所示,找到Qt的源码所在路径

Step2:选择存放输出文件的空目录,如下图所示

Step3:点击Configure

 

点击configure后会弹出如下对话框:

 此时选择你电脑上对应的Visual Studio版本,如果安装了多个Visual Studio,CMAKE应该会检测到它们,即:

但我觉得这应该是CMAKE支持的项目文件生成器,所以说你电脑安装了那个生成器就选择哪个,比如我电脑安装了Visual Studio2019,所以我就选择Visual Studio 2019,即:

 

点击上图的“Finish” 完成生成器的选择。此时CMAKE会输出如下信息:

大概意思是列出你刚刚选择的VS版本中对应的CXX(应该是C++) 的编译器,C语言的编译器,汇编编译器。

一般这一步都会因为找不到Qt的相关信息而报错,我的错误是:

弹窗中意思是:配置过程中发生错误,项目文件可能无效。此时点击“ok” 关闭即可,我们仔细查看上图中红色的错误信息,我截图如下:

 意思其实很明显了,CMAKE找不到Qt6的相关信息,解决方法它也给出来了,即添加“CMAKE_PREFIX_PATH”或者设置“QT6_DIR”环境变量,该环境变量包含上述文件(图中Qt6Config.cmake和qt6-config.cmake),怎么知道这两个文件在哪里呢,大家可以用everything搜索一下嘛,比如我的:

因为我们前面的生成器配置中择了 VS2019 64位,所以这里应该选择图下红框处:

 

此时点击CMAKE中的“Add Entry”新建环境变量:

 弹出如下对话框,选择"PATH”,在Name那一栏输入:CMAKE_PREFIX_PATH

 在Value那一栏找到前面用everything搜索到的路径,最后的信息如下:

 

点击“ok” 即可,再次点击“Configure”,输出如下:

 红框处显示“yes”的话说明,配置成功,如果出错,请参考Qt6编译Mysql驱动_舍先生的博客-CSDN博客_qt6 mysql这个链接修正。

Step4:点击“Generate”

此时已在目录下生成相应的项目文件信息:

 

剩下的步骤按照这个链接Qt6编译Mysql驱动_舍先生的博客-CSDN博客_qt6 mysql来操作即可 ,懒得写了。

 

http://www.lryc.cn/news/2234.html

相关文章:

  • 图论算法:树上倍增法解决LCA问题
  • Java线程池中submit() 和 execute()方法有什么区别
  • Vue.extend和VueComponent的关系源码解析
  • 【动态规划】01背包问题(滚动数组 + 手画图解)
  • javaEE 初阶 — 超时重传机制
  • 小米5x wlan无法打开解决
  • 负载均衡之最小活跃数算法
  • JavaScript 评测代码运行速度的几种方法
  • Linux 编译器 gcc/g++
  • 2.Java基础【Java面试第三季】
  • Java高级-多线程
  • mysql高级(事务、存储引擎、索引、锁、sql优化、MVCC)
  • Java后端开发功能模块思路
  • CAPL(vTESTStudio) - DoIP - TCP发送_05
  • 使用IntelliJ IDEA搭建datax-web开发环境
  • [SSD固态硬盘技术 14] GC垃圾回收太重要了
  • lamada表达式、stream、collect整理
  • Nacos 入门微服务项目实战
  • 【c++】类和对象:让你明白“面向一个对象有多重要”:构造函数,析构函数,拷贝构造函数的深入学习
  • 职场IT老手教你3步教你玩转可视化大屏设计,让领导眼前一亮!
  • 【光伏功率预测】基于EMD-PCA-LSTM的光伏功率预测模型(Matlab代码实现)
  • 大数据Kylin(二):Kylin安装使用
  • 我们的微服务中为什么需要网关?
  • 互联网医院源码 线上问诊 智慧医院源码 C#源码
  • 基于昇腾计算语言AscendCL开发AI推理应用
  • JS document.write()换行
  • Java高级-集合-Collection部分
  • Android性能优化:getResources()与Binder交火导致的界面卡顿优化
  • 常见的内存操作函数
  • python关键字