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

Visual Studio 2019 + Qt + MySQL 开发调试全过程问题详解

Visual Studio 2019 + Qt + MySQL 开发调试全过程问题详解

一、项目未启用 Qt 支持导致构建失败

问题现象
  • 项目右键未出现 “Enable Qt Build Steps” 选项;
  • 添加 .ui 文件后不生成 ui_xxx.h
  • 包含 Q_OBJECT 的类提示 metaObjectqt_metacastqt_metacall 等未定义链接错误(LNK2001);
  • 添加 .cpp / .h 文件后,即使书写无误,也仍然编译失败。
原因分析
  • 当前项目是以普通 C++ 模板(如 Empty Project 或 Console Project)创建的,不包含 Qt 的构建支持;
  • Visual Studio 的 Qt 插件(Qt VS Tools)只能对通过 Qt 模板创建的项目自动启用构建规则;
  • 缺少 moc/uic/rcc 的自动生成步骤。
解决方案
方法一:重新用 Qt 模板创建项目(推荐)
  1. 在 Visual Studio 中点击“新建项目”;
  2. 搜索并选择 Qt Widgets Application(或 QML 项目等);
  3. 创建后 Qt 插件会自动配置 Qt 构建步骤和生成规则。
方法二:手动添加 Qt 支持
  1. 打开 .vcxproj 项目文件;
  2. <Project> 标签中添加:
<PropertyGroup Label="QtSettings"><EnableQtBuild>true</EnableQtBuild><UseQt>true</UseQt>
</PropertyGroup>
  1. 保存后返回 Visual Studio,重新加载项目;
  2. 此时右键项目,已出现 “Enable Qt Build Steps”,并支持自动生成 moc/ui 文件。
方法三:右键启用 Qt 生成步骤
  1. 在 Visual Studio 中右键项目 → Qt Project Settings;
  2. 勾选 Use QtEnable Qt Build Steps
  3. 保存并重新构建。

二、QObject 子类链接错误

错误现象
error LNK2001: unresolved external symbol "public: virtual struct QMetaObject const * __cdecl ClassName::metaObject(void)const"
原因
  • 使用了 Q_OBJECT 宏但没有生成对应的 moc_xxx.cpp 文件;
  • 项目未启用 Qt Build Steps,导致 moc 步骤未执行。
解决方案
  • 按上一节启用 Qt Build Steps;
  • 手动添加 moc_xxx.cpp和.h 到项目。

三、MySQL Connector 配置问题

错误现象
fatal error C1083: 无法打开包括文件: "jdbc/mysql_driver.h": No such file or directory
解决方法
  1. 添加头文件目录:

    • 打开 项目属性 → C/C++ → 常规 → 附加包含目录:

      D:\vs2019\mysql-connector-c++-8.0.30-winx64\include\jdbc
      
  2. 添加库目录:

    • 链接器 → 常规 → 附加库目录:

      D:\vs2019\mysql-connector-c++-8.0.30-winx64\lib64
      
  3. 链接库文件:

    • 链接器 → 输入 → 附加依赖项:

      mysqlcppconn.lib
      

四、运行时找不到 DLL

错误现象

程序编译成功但运行时报错,提示找不到 libmysql.dll

原因
  • 可执行文件无法加载动态库;
  • 系统路径未包含库路径。
解决方式
方法一:将以下 DLL 复制到 exe 所在目录
D:\vs2019\mysql-connector-c++-8.0.30-winx64\lib64

需要的 DLL 包括:

  • libmysql.dll
  • libssl-1_1-x64.dll
  • libcrypto-1_1-x64.dll
方法二:添加至系统环境变量 PATH
  1. 打开“系统属性” → “高级” → “环境变量”;

  2. 找到系统变量 Path → 编辑;

  3. 添加路径:

    D:\vs2019\mysql-connector-c++-8.0.30-winx64\lib64
    
  4. 重启 Visual Studio。


五、数据库连接失败错误 1049

错误信息
1049 (Unknown database 'Group')
原因
  • 数据库 Group 不存在;
解决办法
  • 使用正确已存在的数据库名;

  • 或在 MySQL 中创建数据库:

    CREATE DATABASE Group;
    

在这里插入图片描述

六、手动添加 .cpp/.h/.ui 后无法识别类

表现
  • SettingParamDialog 添加后仍然报错未定义;
解决
  1. 确保通过 项目右键 → 添加 → 现有项 正确添加;
  2. 若为 *.ui 文件,添加后应自动生成 ui_xxx.h 文件,需启用 Qt 构建步骤;
  3. 不要复制文件到目录后直接手动引用,要通过 VS 添加。

七、不要将项目改为 Makefile 工程

  • 会导致 Qt 插件不再生效,丧失自动构建能力;
  • 无法在 IDE 中看到 Qt 的右键菜单;
  • 推荐始终使用 .vcxproj 工程结构。

在这里插入图片描述

总结

  • 使用 Visual Studio 搭配 Qt 开发必须确保项目启用了 Qt Build 支持;
  • Qt 的 moc/uic/rcc 都需要工具链支持自动生成,不应手动编写;
  • 与 MySQL 连接需要配置头文件、库文件和运行时 DLL;
  • 所有路径建议加入系统 PATH,避免运行失败;
  • 项目建议通过 Qt 模板创建,或手动修复 .vcxproj

如需自动脚本、模板项目、示例代码,可以在团队中保存此文档或向我进一步索取。

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

相关文章:

  • Vue 3 表单数据缓存架构设计:从问题到解决方案
  • 前端基础之《Vue(29)—Vue3 路由V4》
  • ADB打印设备日志相关
  • 手机拍照识别中模糊场景准确率↑37%:陌讯动态适配算法实战解析
  • 用LaTeX优化FPGA开发:结合符号计算与Vivado工具链(二)
  • 大模型量化上溢及下溢解析
  • ESP32-menuconfig(4) -- Partition Table
  • Web Worker 性能革命:让浏览器多线程为您的应用加速
  • ChipCamp探索系列 -- 1. Soft-Core RISC-V on FPGA
  • 【10】C#实战篇——C# 调用 C++ dll(C++ 导出函数、C++导出类)
  • 华清远见25072班C语言学习day5
  • Advances and Challenges in Foundation Agents--Memory调研
  • WPF 双击行为实现详解:DoubleClickBehavior 源码分析与实战指南
  • 基于ffmpeg和rk3588的mpp编解码库多路融屏程序设计
  • 贝叶斯定理 vs 条件概率
  • Redis(⑤-线程池隔离)
  • 【从0到1制作一块STM32开发板】6. PCB布线--信号部分
  • React函数组件灵魂搭档:useEffect深度通关指南!
  • 如何实现在多跳UDP传输场景,保证单文件和多文件完整传输的成功率?
  • 三相交流电机旋转磁场产生原理
  • Django模型开发全解析:字段、元数据与继承的实战指南
  • Flutter开发 多孩子布局组件
  • [202403-B]算日期
  • 蓝桥杯----大模板
  • V4L2摄像头采集 + WiFi实时传输实战全流程
  • FreeRTOS入门知识(初识RTOS)(一)
  • Chat GPT5功能
  • 使用 Gulp 替换 XML 文件内容
  • 明厨亮灶场景下误检率↓76%:陌讯多模态融合算法实战解析
  • Ignite节点生命周期钩子机制详解