)
保姆级教程在Windows 11上用Qt 6.5 MSVC 2022编译Qt MySQL驱动附资源包引言为什么需要手动编译MySQL驱动如果你在Windows平台上使用Qt开发数据库应用可能会遇到一个尴尬的情况官方提供的预编译包中并不包含MySQL驱动。这是因为MySQL的许可证限制Qt无法直接分发编译好的驱动。但别担心手动编译驱动并不复杂尤其是使用MSVC 2022和Qt 6.5的组合整个过程可以非常顺畅。本教程将带你一步步完成环境准备与依赖检查项目配置与编译设置常见问题排查与解决方案驱动部署与测试验证我们将使用Visual Studio 2022的MSVC工具链这是许多Windows开发者的首选因为它与Windows系统深度集成性能优化更好。相比MinGWMSVC编译的驱动在Windows上通常有更好的兼容性和性能表现。1. 环境准备搭建编译基础1.1 必备软件清单在开始之前请确保已安装以下软件并注意版本匹配软件名称推荐版本备注Windows11 22H2或更新需要支持最新的MSVC工具链Visual Studio2022 (17.6)安装时勾选C桌面开发Qt6.5.0安装时选择MSVC 2022 64-bit组件MySQL8.0.31建议使用社区版安装时选择开发组件CMake3.25Qt 6.5的编译系统依赖提示所有软件都应保持相同的架构32位或64位混合架构会导致链接错误。本教程以64位环境为例。1.2 验证Qt源码安装Qt安装程序默认不会安装源码需要手动勾选# 检查是否安装了源码 ls %QT_INSTALL_DIR%\Src\qtbase\src\plugins\sqldrivers如果目录不存在需要通过Qt Maintenance Tool添加Qt Sources组件。1.3 MySQL开发库配置MySQL的libmysql.lib是编译驱动的关键。确保安装时勾选了开发组件运行MySQL Installer选择Custom安装类型展开MySQL Servers → MySQL Server 8.0勾选Development Components安装完成后记录以下路径备用Include目录C:\Program Files\MySQL\MySQL Server 8.0\includeLib目录C:\Program Files\MySQL\MySQL Server 8.0\lib2. 项目配置定制编译环境2.1 创建编译工作区为避免路径问题建议新建专用目录# 创建工作目录 mkdir C:\QtMySQLBuild cd C:\QtMySQLBuild # 复制驱动源码 xcopy %QT_INSTALL_DIR%\Src\qtbase\src\plugins\sqldrivers .\sqldrivers /E2.2 配置CMake参数在sqldrivers目录下创建cmake.conf.user文件内容如下# MySQL配置 set(FEATURE_sql_mysql ON) set(MySQL_INCLUDE_DIR C:/Program Files/MySQL/MySQL Server 8.0/include) set(MySQL_LIBRARY C:/Program Files/MySQL/MySQL Server 8.0/lib/libmysql.lib) # 禁用不需要的数据库驱动 set(FEATURE_sql_odbc OFF) set(FEATURE_sql_psql OFF)2.3 生成VS解决方案使用Qt自带的CMake工具生成项目文件# 设置环境变量 call %VS_INSTALL_DIR%\VC\Auxiliary\Build\vcvarsall.bat x64 # 生成项目 cmake -G Visual Studio 17 2022 -A x64 -DCMAKE_PREFIX_PATH%QT_INSTALL_DIR%\msvc2019_64 ..3. 编译与问题解决3.1 常见编译错误处理错误1LNK2019 - 未解析的外部符号error LNK2019: unresolved external symbol mysql_get_ssl_cipher referenced in function...解决方案确保链接了正确的libmysql.lib版本。MySQL 8.0需要使用libmysql.lib而非mysqlclient.lib。错误2C2065 - 未声明的标识符error C2065: MYSQL_OPT_SSL_ENFORCE: undeclared identifier修改qsql_mysql.cpp在包含MySQL头文件后添加#ifndef MYSQL_OPT_SSL_ENFORCE #define MYSQL_OPT_SSL_ENFORCE 30 #endif3.2 执行编译在生成的解决方案中打开Qt6SqlDriverPlugins.sln选择Release|x64配置右键mysql项目 → 生成成功编译后驱动文件会生成在C:\QtMySQLBuild\plugins\sqldrivers\qsqlmysql.dll4. 部署与测试4.1 驱动安装将编译产物部署到Qt目录# 复制驱动文件 copy C:\QtMySQLBuild\plugins\sqldrivers\qsqlmysql.dll %QT_INSTALL_DIR%\msvc2019_64\plugins\sqldrivers # 复制MySQL运行时库 copy C:\Program Files\MySQL\MySQL Server 8.0\lib\libmysql.dll %QT_INSTALL_DIR%\msvc2019_64\bin4.2 测试连接创建测试项目在.pro文件中添加QT sql测试代码示例#include QSqlDatabase #include QDebug void testMySQLConnection() { qDebug() Available drivers: QSqlDatabase::drivers(); QSqlDatabase db QSqlDatabase::addDatabase(QMYSQL); db.setHostName(localhost); db.setDatabaseName(test); db.setUserName(root); db.setPassword(yourpassword); if(db.open()) { qDebug() Connection established!; db.close(); } else { qDebug() Connection failed: db.lastError().text(); } }5. 高级配置与优化5.1 静态链接配置如需静态链接MySQL驱动修改CMake配置set(BUILD_SHARED_LIBS OFF) set(MySQL_LIBRARY C:/Program Files/MySQL/MySQL Server 8.0/lib/libmysql.lib)5.2 调试符号生成为方便调试可以生成PDB文件set(CMAKE_BUILD_TYPE RelWithDebInfo)5.3 资源包内容为方便读者我们准备了开箱即用的资源包包含预编译的qsqlmysql.dll (MSVC 2022 x64)适配的libmysql.dll (8.0.31)完整的include头文件配置好的CMake脚本在实际项目中使用这些资源时只需将dll文件放入应用程序目录在代码中正确初始化数据库连接