VS2019 配置 Qt 库
如标题所说,在 VS 编译器中调用 Qt 库
首先安装一个适合 VS 的 Qt 版本

不知道怎么安装的,可以参考:Visual Studio+Qt配置开发环境
Qt 安装之后,需要在 VS 编译器中安装 Qt VS Tools 拓展,以便在 vs 中新建 C++/Qt 项目
不知道如何安装的,可以参考:Qt:03---Visual Studio安装Qt与使用

点击 Qt Versions 选项 add new Qt versions,可以按照下图来设置

我有两个 Qt 版本,这边可以任选一个,当然也只允许选一个
配置完 Qt 拓展之后,就可以新建一个项目了,比如 Qt Empty Application 或者 Qt Widgets Application 或者 Qt Console Application,根据自己的需求来建

接着在 vs 编译器中设置 Qt 的头文件目录和库目录,比如



输入这些路径时,需要设置 QtDir 宏,我们可以直接在 VS 项目中的 .vcxproj.user 文件中手动输入配置就行(有时不需要,可以观察设置 QtDir 是否被编译器解释),比如

没有被正确解释的话就可以手动修改 .vcxproj.user 文件了
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<ShowAllFiles>false</ShowAllFiles>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<QTDIR>D:\Qt\5.15.0\msvc2019_x86_static</QTDIR>
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
<QmlDebugSettings>file:$(ProjectGuid),block</QmlDebugSettings>
<QmlDebug>-qmljsdebugger=$(QmlDebugSettings)</QmlDebug>
<LocalDebuggerCommandArguments>$(QmlDebug)</LocalDebuggerCommandArguments>
<LocalDebuggerEnvironment>PATH=$(QTDIR)\bin%3b$(PATH) $(LocalDebuggerEnvironment)</LocalDebuggerEnvironment>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugWin|Win32'">
<QTDIR>D:\Qt\5.15.0\msvc2019_x86_static</QTDIR>
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
<QmlDebugSettings>file:$(ProjectGuid),block</QmlDebugSettings>
<QmlDebug>-qmljsdebugger=$(QmlDebugSettings)</QmlDebug>
<LocalDebuggerCommandArguments>$(QmlDebug)</LocalDebuggerCommandArguments>
<LocalDebuggerEnvironment>PATH=$(QTDIR)\bin%3b$(PATH) $(LocalDebuggerEnvironment)</LocalDebuggerEnvironment>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugDll|Win32'">
<QTDIR>D:\Qt\5.15.0\msvc2019_x86_static</QTDIR>
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
<QmlDebugSettings>file:$(ProjectGuid),block</QmlDebugSettings>
<QmlDebug>-qmljsdebugger=$(QmlDebugSettings)</QmlDebug>
<LocalDebuggerCommandArguments>$(QmlDebug)</LocalDebuggerCommandArguments>
<LocalDebuggerEnvironment>PATH=$(QTDIR)\bin%3b$(PATH) $(LocalDebuggerEnvironment)</LocalDebuggerEnvironment>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<QTDIR>D:\Qt\5.15.0\msvc2019_x86_static</QTDIR>
<DebuggerFlavor>WindowsLocalDebugger</DebuggerFlavor>
<LocalDebuggerEnvironment>PATH=$(QTDIR)\bin%3b$(PATH) $(LocalDebuggerEnvironment)</LocalDebuggerEnvironment>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='ReleaseDll|Win32'">
<QTDIR>D:\Qt\5.15.0\msvc2019_x86_static</QTDIR>
<LocalDebuggerEnvironment>PATH=$(QTDIR)\bin%3b$(PATH)</LocalDebuggerEnvironment>
</PropertyGroup>
</Project>
笔记:
1. 今天查看 Qt VS Tools 时,发现该选项后面提示 qt visual studio tools version 2.9.1 initializing(rev.6),查看相关文章发现要更新 vs 编译器(我的是 vs2019),更新完后要重启电脑,
之后重新打开 VS 项目(里面包含 Qt 界面库的调用),编译后报错,提示 error MSB4184: 无法计算表达式“[System.IO.File]... qt.natvis.xml not found,这个错误之前是没有的,研究后发现是编译器没有找到该文件,
解决方法是,复制一个已有的 qt5.natvis.xml 文件,并重名为 qt.natvis.xml,重新编译,没有错误

2. 另外编译时会出现 error LNK2038: 检测到 “RuntimeLibrary” 的不匹配项的错误,这边的解决方法是将 多线程调试Dll (/MDd) 改为 多线程调试(/MTd)
有些情况是反过来,可以都试一下

3. 编辑环境变量应该是需要的,可以根据需要来设置

设置完之后可以重启电脑或者 cmd 输入 set PATH=C; 来激活,并另外打开 cmd 输入 echo %PATH% 检查是否生效
一些细节可以参考:
补充:
Qt 的一些库需要依赖 win32 的库,所以在静态绑定库时,不仅要包括 Qt 库,还需要 win32 库,下面列举一些常用的库
#pragma comment(lib, "Dwmapi.lib")
#pragma comment(lib, "Winspool.lib")
#pragma comment(lib, "Imm32.lib")
#pragma comment(lib, "oleaut32.lib")
#pragma comment(lib, "shlwapi.lib")
#pragma comment(lib, "rpcrt4.lib")
#pragma comment(lib, "gdi32.lib")
#pragma comment(lib, "comdlg32.lib")
#pragma comment(lib, "winmm.lib")
#pragma comment(lib, "ws2_32.lib")
#pragma comment(lib, "wldap32.lib")
#pragma comment(lib, "ole32.lib")
#pragma comment(lib, "uuid.lib")
#pragma comment(lib, "advapi32.lib")
#pragma comment(lib, "glu32.lib")
#pragma comment(lib, "user32.lib")
#pragma comment(lib, "mpr.lib")
#pragma comment(lib, "version.lib")
#pragma comment(lib, "kernel32.lib")
#pragma comment(lib, "shell32.lib")
#pragma comment(lib, "uxtheme.lib")
#pragma comment(lib, "opengl32.lib")
#pragma comment(lib, "crypt32.lib")
#pragma comment(lib, "strmiids.lib")
#pragma comment(lib, "dnsapi.lib")
#pragma comment(lib, "iphlpapi.lib")
#pragma comment(lib, "D3d9.lib")
#pragma comment(lib, "dxguid.lib")
#pragma comment(lib, "userenv.lib")
#pragma comment(lib, "netapi32.lib")
#pragma comment(lib, "wtsapi32.lib")
#pragma comment(lib, "dwrite.lib")
#pragma comment(lib, "d2d1.lib") // qwidget.h 支持
#ifdef _DEBUG
#pragma comment(lib, "Qt5Widgetsd.lib")
#else
#pragma comment(lib, "Qt5Widgets.lib")
#endif // _DEBUG // 平台插件支持
#ifdef _DEBUG
#pragma comment(lib, "qwindowsd.lib")
#pragma comment(lib, "Qt5EventDispatcherSupportd.lib")
#pragma comment(lib, "Qt5FontDatabaseSupportd.lib")
#pragma comment(lib, "qtfreetyped.lib")
#pragma comment(lib, "Qt5ThemeSupportd.lib")
#pragma comment(lib, "Qt5AccessibilitySupportd.lib")
#pragma comment(lib, "Qt5WindowsUIAutomationSupportd.lib")
#pragma comment(lib, "Qt5Guid.lib")
#pragma comment(lib, "qtlibjpegd.lib")
#pragma comment(lib, "qtlibpngd.lib")
#pragma comment(lib, "qtharfbuzzd.lib")
#pragma comment(lib, "Qt5Cored.lib")
#pragma comment(lib, "qtpcre2d.lib")
#pragma comment(lib, "libEGLd.lib")
#pragma comment(lib, "libGLESv2d.lib")
#else
#pragma comment(lib, "qwindows.lib")
#pragma comment(lib, "Qt5EventDispatcherSupport.lib")
#pragma comment(lib, "Qt5FontDatabaseSupport.lib")
#pragma comment(lib, "qtfreetype.lib")
#pragma comment(lib, "Qt5ThemeSupport.lib")
#pragma comment(lib, "Qt5AccessibilitySupport.lib")
#pragma comment(lib, "Qt5WindowsUIAutomationSupport.lib")
#pragma comment(lib, "Qt5Gui.lib")
#pragma comment(lib, "qtlibjpeg.lib")
#pragma comment(lib, "qtlibpng.lib")
#pragma comment(lib, "qtharfbuzz.lib")
#pragma comment(lib, "Qt5Core.lib")
#pragma comment(lib, "qtpcre2.lib")
#pragma comment(lib, "libEGL.lib")
#pragma comment(lib, "libGLESv2.lib")
#endif // _DEBUG // 图片插件支持
#ifdef _DEBUG
#pragma comment(lib, "qgifd.lib")
#pragma comment(lib, "qicnsd.lib")
#pragma comment(lib, "qicod.lib")
#pragma comment(lib, "qjpegd.lib")
#pragma comment(lib, "qsvgd.lib")
#pragma comment(lib, "Qt5Svgd.lib") // QSvgPlugin 支持
#pragma comment(lib, "qtgad.lib")
#pragma comment(lib, "qtiffd.lib")
#pragma comment(lib, "qwbmpd.lib")
#pragma comment(lib, "qwebpd.lib")
#else
#pragma comment(lib, "qgif.lib")
#pragma comment(lib, "qicns.lib")
#pragma comment(lib, "qico.lib")
#pragma comment(lib, "qjpeg.lib")
#pragma comment(lib, "qsvg.lib")
#pragma comment(lib, "Qt5Svg.lib") // QSvgPlugin 支持
#pragma comment(lib, "qtga.lib")
#pragma comment(lib, "qtiff.lib")
#pragma comment(lib, "qwbmp.lib")
#pragma comment(lib, "qwebp.lib")
#endif // _DEBUG // 音频插件支持
#ifdef _DEBUG
#pragma comment(lib, "qtaudio_windowsd.lib")
#pragma comment(lib, "Qt5Multimediad.lib")
#else
#pragma comment(lib, "qtaudio_windows.lib")
#pragma comment(lib, "Qt5Multimedia.lib")
#endif // _DEBUG // 窗体主题
#ifdef _DEBUG
#pragma comment(lib, "qwindowsvistastyled.lib")
#else
#pragma comment(lib, "qwindowsvistastyle.lib")
#endif // _DEBUG
VS2019 配置 Qt 库的更多相关文章
- Qt在Mac OS X下的编程环境搭建(配置Qt库和编译器,有图,很清楚)
尊重作者,支持原创,如需转载,请附上原地址:http://blog.csdn.net/libaineu2004/article/details/46234079 在Mac OS X下使用Qt开发,需要 ...
- win10环境下VS2019配置NTL库
win10环境下VS2019配置NTL库 1.下载 WINNTL库文件 https://www.shoup.net/ntl/download.html 2.创建静态库 文件->新建-&g ...
- vs2019配置boost库(转载)
网址:https://blog.csdn.net/qq_42214953/article/details/105087015 关于途中的执行文件,可以使用b2.exe,不用跟着教程走. 如果本来就有b ...
- VS 2010配置Qt 4.8.5
由于早上偶然的一个念想,今天的宝贵时光就奉献给了Qt的安装及其和VS 2010的配置上了. 说实话,开始时真的查找了资料,包括博客.文库.知道等等,作者们写得都很全面,细致. 但自己动手尝试就是错误百 ...
- linux下配置QT(很全的步骤,从下载开始,配置QMAKESPEC)
一.下载Qt源码包到本机,然后解压缩#tar zxvf qt-x11-opensource-src-4.3.2.tar.gz -C /usr/local //将qt-x11-opensource-sr ...
- Qt库的静态编译
一.准备软件1. MinGW (C:\Qt\MinGW)http://pan.baidu.com/share/link?shareid=174269&uk=673227135这个文件解 ...
- Linux 下编译、安装、配置 QT
转自Linux 下编译.安装.配置 QT 注意:编译安装耗时费力,且很容易出错,要不断调整编译参数,不推荐使用,否则这将会是一个纠结痛苦的过程. 打算做嵌入式图像处理,计划方案嵌入式Linux+Ope ...
- Linux下配置QT环境
一.下载Qt源码包到本机,然后解压缩 #tar zxvf qt-x11-opensource-src-4.3.2.tar.gz -C /usr/local //将qt-x11-opensource-s ...
- 1.新手上路:Windows下,配置Qt环境
个人体会: 我最初只是想看看C++除了"黑窗口"之外,怎么才能做一些"更好看的东西".之后在网上看到有人推荐Qt,就看了一下官网(https://www.qt. ...
- 支持源码单步调试QT库编译笔记
支持源码单步调试QT库编译笔记 编译环境:windows 10 编译工具:mingw_4_4_0 Qt源码版本:qt-everywhere-opensource-src-4.8.5(下载地址:http ...
随机推荐
- 快速迁移Grafana/Prometheus等的方式方法
快速迁移Grafana/Prometheus等的方式方法 背景 有一套鲲鹏环境下面的Grafana监控平台. 同事想能够将平台内的时序数据库等迁移到一个别的机器上进行使用. 自从自己开始搞国产化之后, ...
- [转帖]TiFlash 面向编译器的自动向量化加速
作者:朱一帆 目录 SIMD 介绍 SIMD 函数派发方案 面向编译器的优化 SIMD 介绍 SIMD 是重要的重要的程序加速手段.CMU DB 组在 Advanced Database Syst ...
- [转帖]harbor镜像仓库清理操作
https://www.cnblogs.com/FengGeBlog/p/15517706.html 两年前清理过一次harbor镜像,而现在又要面临清镜像的操作了,笔者目前所在的公司镜像是存放在ce ...
- [读书笔记]SQLSERVER企业级平台管理实践读书笔记--从等待事件判断性能瓶颈
用到的系统试图主要有: select * from sys.dm_os_wait_statsselect * from sys.sysprocessesselect * from sys.dm_exe ...
- PHP GC回收机制详解
前言 GC的全称是Garbage Collection也就是垃圾回收的意思,在PHP中,是使用引用计数和回收周期来自动管理内存对象的,当一个对象被设置为NULL,或者没有任何指针指向时,他就会变成垃圾 ...
- bean的一生
你曾读spring源码 "不知所云"."绞尽脑汁"."不知所措"嘛 那这篇文章可能会对你有所帮助,小编尝试用简单.易懂的例子来模拟sprin ...
- NOI2023 游记
不完全按时间顺序写.记录 NOI 的一些琐事. 从 XDFZ 坐大巴 5 个小时来到成七.第一眼看到的是一个放着 NOI 牌子的台阶,还有一个签名墙.好像在我们之前到的人不太多? 用中英双语签名(冷月 ...
- 果然,基于 VictoriaMetrics 修改而来的 VictoriaLogs 来了!!!
作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢! cnblogs博客 zhihu Github 公众号:一本正经的瞎扯 2022 年 6 月的时候,正在痛苦的研究 grafana ...
- [置顶] Gin--Begoo框架快速指南
Gin篇 第一篇: Gin-官方文档 第二篇: Gin-安装,修改启动端口,get/post 请求参数,模型绑定shouldbind,自定义验证器/表单验证 第三篇: Gin-上传文件/返回前端.中间 ...
- CouchDB vs. LevelDB
CouchDB 和 LevelDB 都是数据库系统,但它们在很多方面有着不同的设计和应用重点.下面是对这两个数据库在一些关键点上的对比: 数据模型: CouchDB:CouchDB 是一种面向文档的数 ...