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

新手使用qt6 编译mysql驱动的坑

特别提示,想省时跳过下面1,2,因为这是按网上找的教程,但qt6编译驱动的步骤不一样了,直接从第4看吧。

  1. 连接mysql数据库,必须自行使用源代码编译生成mysql驱动文件,安装qt时必须勾选source,源代码在C:\Qt\6.8.2\Src\qtbase\src\plugins\sqldrivers\mysql目录,打印发现少了很多文件,如mysql.pro等,只能百度自己创建一个mysql文件。
  2. qsql_mysql.cpp文件引用的h头文件路径很多不对,一般mysql引用的h头文件在三个目录:QtSql,QtCode,private,最神奇就是private一时找不到,结果发现在 6.8.2\msvc2022_64\include\QtSql\6.8.2\QtSql\private,路径很奇怪
  3. 上面所有头文件梳理完,再构建,又提示: error: C2065: “MYSQL_OPT_SS: 未声明的标识符,经查因为mysql数据库版本太旧?我使用的5.1的,只能下载个新版mysql8,安装好后配置lib和include目录(只需要这两目录,其它安装mysql的电脑复制过来也可以),又有错误提示:“QMYSQLDriver::staticMetaObject”: 不允许 dllimport 静态数据成员 的定义,算了,改不动了,我还是直接去下载个源码来编译吧,https://download.qt.io/archive/qt/6.8/6.8.2/submodules/,找到qtbase-everywhere-src-6.8.2.zip
  4. 单独复制mysql的lib和include两文件夹到一个英文文件夹里,并且路径不要有空格(听劝就对)
  5. 编辑C:\Qt\6.8.2\Src\qtbase\src\plugins\sqldrivers\.cmake.conf,添加SET(FEATURE_sql_mysql ON)
    SET(MySQL_INCLUDE_DIR "D:/MySQL8/include")
    SET(MySQL_LIBRARY "D:/MySQL8/lib/libmysql.lib")
  6. 用QTCreator打开文件C:\Qt\6.8.2\Src\qtbase\src\plugins\sqldrivers\CMakeLists.txt。
  7. 打开后,第一步就过不去了,提示No suitable kits found,但是我已安装好desktop QT 6.8.2 MinGW 64 bit和MSVC2022 64 bit。
  8. 鼠标放在左边有感叹号的套件上,提示少了cmake,在qt根目录下运行MaintenanceTool.exe,安装上cmake和ninja,然后 管理构建套件 里,点击套件,在下方的 cmake tool里选上cmake,应用后就可以了。
  9. 终于进入到构建程序阶段,又又又有问题,构建提示: error: 'MYSQL_OPT_SSL_KEY' was not declared in this scope;等9点相似的错误,经查是因为mysql数据库太旧(用的5.1),改成mysql8,编译通过,生成的文件在C:\Qt\6.8.2\Src\qtbase\src\plugins\sqldrivers\build\Desktop_Qt_6_8_2_MinGW_64_bit-Debug\plugins\sqldrivers目录下
  10. 但这是mingw,而我的项目是使用msvc(项目中用到webengineview,必须要求msvc),切换到msvc后又出错了,无法正确加载项目:很好很QT,
  11. 顺带一个解决编译输出这些地方中文乱码问题:1.在cmd里输入chcp 65001,设置为utf-8格式,2.项目->管理构建套件->环境->interface->语言,从下拉菜单中选择chinese(china),重启qtcreator就可以看到中文了

http://www.mrgr.cn/news/95718.html

相关文章:

  • 解锁 AWX+Ansible 自动化运维新体验:快速部署实战
  • 内核编程十:进程的虚拟地址空间
  • 穿越之程序员周树人的狂人日记Part3__人机共生纪元
  • 数据结构篇:空间复杂度和时间复杂度
  • C++学习之路:filesystem文件系统的使用(C++17特性)
  • 【LeetCode】算法详解#1 ---字母异位词
  • jangow靶机攻略
  • 中间件解析漏洞之Tomcat集合
  • 大模型的后训练(post-training)方法
  • JDK 24:Java 24 中的新功能
  • K8s 是什么? 基本元件、核心功能、4 大优点一次看!
  • Unity Shader编程】之复杂光照
  • RAG优化:Python从零实现强化学习RL增强
  • C语言动态内存管理深度解析与嵌入式开发实战
  • C++类与对象的第二个简单的实战练习-3.24笔记
  • RAG优化:python从零实现时间管理大师Self-RAG
  • Apollo 相关知识点
  • 中间件框架漏洞攻略
  • C++友元:跨墙访问的三种姿势
  • C/C++蓝桥杯算法真题打卡(Day10)