Visual studio + Qt 项目配置管理
Visual studio + Qt 项目配置管理
1.本机顺利安装 vs 和 Qt 软件
并且设置好Qt 的环境变量比如
E:\Qt\Qt5.9.8\5.9.8\msvc2017_64\bin
E:\Qt\Qt5.9.8\5.9.8\msvc2017_64\lib
E:\Qt\Qt5.9.8\5.9.8\msvc2017_64\include
//这里是你电脑上Qt的路径,每台电脑不一样
2.vs 要安装扩展
安装完之后,关闭vs 电脑会自动安装插件。

3.创建一个Qt项目测试一下


Qt项目就配置成功了。
3.调试动态库
创建了一个 动态库项目,但是visual studio中我无法直接调试动态库项目,可以新建一个 测试 EXE 项目 来调用 databaseSDKLib.dll,然后在 databaseSDKLib 里设置断点进行调试。
1. 创建测试项目
- 在 Visual Studio 里创建一个新的控制台项目 (Console App):
文件 (File) → 新建 (New) → 项目 (Project)- 选择 C++ 控制台应用 (Console App)
- 命名为
TestApp
- 让 EXE 依赖创建的的 DLL:
- 右键
TestApp,选择添加 (Add) → 现有项 (Existing Item) - 添加
databaseSDKLib.h(DLL 的头文件) - 在
TestApp的源文件 (Source Files)里添加main.cpp并调用你的 DLL:
- 右键
3.配置 TestApp 依赖 databaseSDKLib
-
右键
TestApp,选择属性 (Properties) -
在 “VC++ 目录” → “包含目录 (Include Directories)” 里添加
databaseSDKLib的头文件路径 -
在 “VC++ 目录” → “库目录 (Library Directories)” 里添加
databaseSDKLib.lib的路径 -
在 “链接器 (Linker) → 输入 (Input)”里,在附加依赖项 (Additional Dependencies)
添加:
databaseSDKLib.lib
4.设置 databaseSDKLib.dll 的运行路径
-
右键
TestApp,选择 “属性 (Properties)” -
在 “调试 (Debugging)” → “环境 (Environment)” 添加:
PATH=D:\your_dll_folder;%PATH%这样,运行时就能找到
databaseSDKLib.dll
5.运行 TestApp 并调试
- 设置
databaseSDKLib断点 - 右键
TestApp,点击 “设为启动项目 (Set as Startup Project)” - F5 运行调试,如果
TestApp调用了 DLL,VS 就会跳转到databaseSDKLib的代码里。
添加引用

✅ 如果 动态库依赖其他第三方库, TestApp 也需要添加这些库的依赖。
✅ 需要在 TestApp 中配置头文件目录、库文件目录和 DLL 的路径,
✅ 确保在调试时,所有依赖都被正确加载。
4.releas模式下也可以进行断点调试。
5.Visual Studio 配置 C++ 项目,需要设置多个关键参数
1. C/C++ 预处理和编译相关配置
(1)附加包含目录 (Include Directories)
-
路径设置:
项目属性 → C/C++ → 常规 → 附加包含目录 -
作用:告诉编译器在哪里寻找头文件 (
.h/.hpp)。 -
示例:
D:\Boost\include -
用途:
- 当你的项目依赖于外部库(如 Qt、Boost)时,需要指定这些库的头文件路径。
- 例如,代码
#include <QtCore/QObject>,编译器会去D:\Qt\5.15.2\msvc2019_64\include目录下寻找QObject头文件。
2. 链接器(Linker)相关配置
(2)库目录 (Library Directories)
-
路径设置:
项目属性 → 链接器 → 常规 → 附加库目录 -
作用:告诉链接器 (
link.exe) 在哪里寻找.lib静态库或动态库的导入库。 -
示例:
plaintext复制编辑D:\Qt\5.15.2\msvc2019_64\lib D:\Boost\lib -
用途:编译
.cpp文件时只需要头文件,但链接时需要.lib文件,所以必须指定库所在路径。
(3)附加依赖项 (Additional Dependencies)
-
路径设置:
项目属性 → 链接器 → 输入 → 附加依赖项 -
作用:指定需要链接的
.lib文件(编译时链接)。 -
示例
:
plaintext复制编辑Qt5Core.lib Qt5Widgets.lib Boost_system.lib -
用途:
- 当你使用
databaseSDKLib这样的库时,最终的应用程序需要链接databaseSDKLib.lib,否则无法解析库中的函数。
- 当你使用
3. 运行时配置
(5)环境变量 (Environment)
-
路径设置:
项目属性 → 调试 → 环境 -
作用:运行时加载
.dll文件(动态库)。 -
示例:
PATH=D:\Qt\5.15.2\msvc2019_64\bin;%PATH% -
用途:
- 如果
TestApp.exe运行时找不到Qt5Core.dll,就需要将 Qt 运行库的bin目录添加到PATH变量。
- 如果
4. 代码生成和优化
-
路径设置:
项目属性 → C/C++ → 代码生成 → 运行时库 -
选项:
选项 说明 /MD使用多线程动态库( msvcrt.dll),适用于动态链接/MT使用多线程静态库( libcmt.lib),适用于静态链接/MDd/MD的调试版本/MTd/MT的调试版本 -
用途:
- 如果你用
/MD编译databaseSDKLib,那么TestApp也必须用/MD,否则可能会有符号冲突。
- 如果你用
5. 预处理器宏
(7)预处理器定义 (Preprocessor Definitions)
-
路径设置:
项目属性 → C/C++ → 预处理器 → 预处理器定义 -
作用:定义宏,用于控制编译行为。
-
示例
_CRT_SECURE_NO_WARNINGS; WIN32; QT_CORE_LIB -
用途
_CRT_SECURE_NO_WARNINGS让 MSVC 忽略scanf()之类的安全警告。WIN32表示 Windows 平台,QT_CORE_LIB表示 Qt Core 模块。
6. 编译器优化
(8)优化选项 (Optimization)
-
路径设置:
项目属性 → C/C++ → 优化 -
选项
选项 说明 /O1最小化代码大小 /O2最大化运行速度 /Od禁用优化(适用于调试) /Oy省略帧指针(仅适用于 Release)
7. 其他重要配置
(9)输出目录 (Output Directory)
-
路径设置:
项目属性 → 常规 → 输出目录 -
作用:指定编译生成的
.exe或.dll放在哪里。 -
示例
$(SolutionDir)bin\$(Configuration)\ -
用途让 Debug 和 Release 版本分开放,避免混淆。
(10)中间目录 (Intermediate Directory)
-
路径设置:
项目属性 → 常规 → 中间目录 -
作用:存放编译过程中产生的
.obj文件。 -
示例
$(SolutionDir)build\$(Configuration)\ -
用途避免不同配置的
.obj文件相互覆盖。
| 配置项 | 作用 |
|---|---|
| 附加包含目录 | 指定头文件搜索路径 |
| 库目录 | 指定 .lib 文件搜索路径 |
| 附加依赖项 | 指定需要链接的 .lib 文件 |
| 运行时库 | 选择 /MD(动态库)或 /MT(静态库) |
| 环境变量 | 让程序能找到 .dll |
| 预处理器定义 | 控制编译行为,如 _CRT_SECURE_NO_WARNINGS |
| 输出目录 | 指定 .exe 和 .dll 存放路径 |
| 中间目录 | 指定 .obj 临时文件存放路径 |
相关文章:
Visual studio + Qt 项目配置管理
Visual studio Qt 项目配置管理 1.本机顺利安装 vs 和 Qt 软件 并且设置好Qt 的环境变量比如 E:\Qt\Qt5.9.8\5.9.8\msvc2017_64\bin E:\Qt\Qt5.9.8\5.9.8\msvc2017_64\lib E:\Qt\Qt5.9.8\5.9.8\msvc2017_64\include //这里是你电脑上Qt的路径,每台电脑不一样…...
直装永久授权,最新专业版集成VB7
无论是学生、教师还是职场工作人员,办公软件在日常工作和学习中都是不可或缺的重要工具。在众多办公软件中,微软的Microsoft Office和金山软件的WPS Office最常用的选择。对于许多使用要求不高的小伙伴而言,WPS Office因其易用性和免费版本的…...
AI数字人| Fay开源项目、UE5数字人、本地大模型
数字人实践教程 本教程主要是讲如何在本地UE部署Fay数字人的开源框架。 最终效果可以与人进行自然语言的对话,花了大概10个h的时间到,踩了很多坑,同样想实现的朋友可以作为参考 参考文档:Fay 数字人开源框架 - 飞书云文档 官方的教…...
【网络编程】同步和异步、阻塞和非阻塞,I/O和网络I/O
十、基于I/O模型的网络开发 10.1 同步和异步 对于多个线程而言,同步、异步就是线程间的步调是否要一致、是否要协调:要协调线程 之间的执行时机就是线程同步,否则就是异步。 对于一个线程的请求调用来讲,同步和异步的区别是是否…...
第本章:go 切片
注意: 切片必须要初始化 才能使用 ,切片是引用类型 a :[]int{} // 这上叫始化 此时并没有申请内存 // 如果要追加值的话: append ints : append(a, 1, 2, 3)a : make([]int,5) // 声明切片类型var a []string //声明一…...
VsCode导入时选择相对路径
自动导入时总是以db://开头了,而我们通常需要的是相对路径,对VsCode进行如下设置: 打开 VSCode 设置: 使用快捷键 Ctrl ,(Windows/Linux)或 Cmd ,(Mac)。 或者在菜单栏中选择 …...
CarPlanner:用于自动驾驶大规模强化学习的一致性自回归轨迹规划
25年2月来自浙大和菜鸟网络的论文“CarPlanner: Consistent Auto-regressive Trajectory Planning for Large-scale Reinforcement Learning in Autonomous Driving”。 轨迹规划对于自动驾驶至关重要,可确保在复杂环境中安全高效地导航。虽然最近基于学习的方法&a…...
Vue3:本地启动Vue3项目失败,报not found xxx moudel
一、情况描述 我这边是从git上下载的一份可用代码 是之前在公司上传的 于是,在加clone到本地。继续开发 get到项目后,我先进行了:npm install,也没显示报错。 启动的时候报错。 二、解决 rm -rf node_modules npm cache clean…...
nodejs去除本地文件html字符
说明:我希望用nodejs 写一个小工具,去除本地txt文件中的html字符,去除字符后生成新的文件,同样保存在桌面 文件的具体位置是C:\Users\Administrator\Desktop\file.txt step1:C:\Users\Administrator\WebstormProjects\untitled4\f…...
dify部署
https://github.com/langgenius/dify 介绍 Dify 是一款开源的大语言模型(LLM) 应用开发平台。它融合了后端即服务(Backend as Service)和 LLMOps 的理念,使开发者可以快速搭建生产级的生成式 AI 应用。Dify 内置了构建 LLM 应用所需的关键技…...
【Redis】常用命令汇总
Redis 作为高性能的键值存储数据库,提供了丰富的命令集,主要涵盖 字符串 (String)、哈希 (Hash)、列表 (List)、集合 (Set)、有序集合 (ZSet)、键 (Keys)、Geo(地理位置)、HyperLogLog(基数统计)、Bitmap&a…...
分析TCP三次握手与四次挥手
TCP(传输控制协议)通过三次握手建立连接,四次挥手终止连接,确保数据传输的可靠性。 TCP的三个控制标志位: SYN——用于建立连接,同步序列号。 ACK——用于确认收到的数据。 FIN——用于终止连接。 ISN…...
C++之序列容器(vector,list,dueqe)
1.大体对比 在软件开发的漫长历程中,数据结构与算法始终占据着核心地位,犹如大厦的基石,稳固支撑着整个程序的运行。在众多编程语言中,数据的存储与管理方式各有千秋,而 C 凭借其丰富且强大的工具集脱颖而出ÿ…...
网络安全技术和协议(高软43)
系列文章目录 网络安全技术和协议 文章目录 系列文章目录前言一、网络安全技术1.防火墙2.入侵检测系统IDS3.入侵防御系统IPS 二、网络攻击和威胁三、网络安全协议四、真题在这里插入图片描述 总结 前言 本节讲明网络安全技术和协议方面的相关知识。 一、网络安全技术 1.防火…...
LeetCode697
好的,根据你提供的代码和LeetCode题号(697),我将帮助你生成一个结构化的Markdown文档。首先,我们需要补充一些必要的信息,如题目描述、示例、思路分析等。如果你能提供这些信息会更好,否则我会基…...
js基本功(四)
ASCII ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是一种字符编码标准,用于表示英文字符、数字、标点符号以及一些控制字符。 可以通过 charCodeAt() 方法获取字符的 ASCII 码,也可以通过 String.fromCharCode() 方法将 ASCII 码转…...
linux | Vim 命令快捷操作
注:本文为过去的 “vim 使用笔记”。 跳转命令 跳转命令 #:向前查找光标当前所在单词,并跳转到该单词的上一个出现位置。*:向后查找光标当前所在单词,并跳转到该单词的下一个出现位置。 行内跳转 0:跳转…...
开源订货系统哪个好 三大订货系统源码推荐
在数字化转型加速的今天,企业对订货系统的需求日益增长。一款优质的订货系统源码不仅能提升供应链效率,还能通过二次开发满足个性化业务需求。这里结合 “标准化、易扩展” 两大核心要求,为您精选三款主流订货系统源码,助您快速搭…...
跟着 Lua 5.1 官方参考文档学习 Lua (11)
文章目录 5.4.1 – PatternsCharacter Class:Pattern Item:Pattern:Captures: string.find (s, pattern [, init [, plain]])例子:string.find 的简单使用 string.match (s, pattern [, init])string.gmatch (s, pattern)string.gsub (s, pattern, repl [, n])例子&…...
使用 MyBatis XML 和 QueryWrapper 实现动态查询
本文档介绍了如何在 MyBatis 中结合 XML 配置和 MyBatis-Plus 的 QueryWrapper 来实现动态查询。 1. XML 中定义基本查询 首先,在 MyBatis XML 文件中定义一个基本的 select 查询: <select id"selectCode" resultType"java.util.Ma…...
基于距离变化能量开销动态调整的WSN低功耗拓扑控制开销算法matlab仿真
目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.算法仿真参数 5.算法理论概述 6.参考文献 7.完整程序 1.程序功能描述 通过动态调整节点通信的能量开销,平衡网络负载,延长WSN生命周期。具体通过建立基于距离的能量消耗模型&am…...
反向工程与模型迁移:打造未来商品详情API的可持续创新体系
在电商行业蓬勃发展的当下,商品详情API作为连接电商平台与开发者、商家及用户的关键纽带,其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息(如名称、价格、库存等)的获取与展示,已难以满足市场对个性化、智能…...
盘古信息PCB行业解决方案:以全域场景重构,激活智造新未来
一、破局:PCB行业的时代之问 在数字经济蓬勃发展的浪潮中,PCB(印制电路板)作为 “电子产品之母”,其重要性愈发凸显。随着 5G、人工智能等新兴技术的加速渗透,PCB行业面临着前所未有的挑战与机遇。产品迭代…...
Golang dig框架与GraphQL的完美结合
将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用,可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器,能够帮助开发者更好地管理复杂的依赖关系,而 GraphQL 则是一种用于 API 的查询语言,能够提…...
【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统
目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索(基于物理空间 广播范围)2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...
Java线上CPU飙高问题排查全指南
一、引言 在Java应用的线上运行环境中,CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时,通常会导致应用响应缓慢,甚至服务不可用,严重影响用户体验和业务运行。因此,掌握一套科学有效的CPU飙高问题排查方法&…...
在QWebEngineView上实现鼠标、触摸等事件捕获的解决方案
这个问题我看其他博主也写了,要么要会员、要么写的乱七八糟。这里我整理一下,把问题说清楚并且给出代码,拿去用就行,照着葫芦画瓢。 问题 在继承QWebEngineView后,重写mousePressEvent或event函数无法捕获鼠标按下事…...
人机融合智能 | “人智交互”跨学科新领域
本文系统地提出基于“以人为中心AI(HCAI)”理念的人-人工智能交互(人智交互)这一跨学科新领域及框架,定义人智交互领域的理念、基本理论和关键问题、方法、开发流程和参与团队等,阐述提出人智交互新领域的意义。然后,提出人智交互研究的三种新范式取向以及它们的意义。最后,总结…...
Python竞赛环境搭建全攻略
Python环境搭建竞赛技术文章大纲 竞赛背景与意义 竞赛的目的与价值Python在竞赛中的应用场景环境搭建对竞赛效率的影响 竞赛环境需求分析 常见竞赛类型(算法、数据分析、机器学习等)不同竞赛对Python版本及库的要求硬件与操作系统的兼容性问题 Pyth…...
如何在Windows本机安装Python并确保与Python.NET兼容
✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…...
