如标题所说,在 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 库的更多相关文章

  1. Qt在Mac OS X下的编程环境搭建(配置Qt库和编译器,有图,很清楚)

    尊重作者,支持原创,如需转载,请附上原地址:http://blog.csdn.net/libaineu2004/article/details/46234079 在Mac OS X下使用Qt开发,需要 ...

  2. win10环境下VS2019配置NTL库

    win10环境下VS2019配置NTL库 1.下载 WINNTL库文件     https://www.shoup.net/ntl/download.html 2.创建静态库 文件->新建-&g ...

  3. vs2019配置boost库(转载)

    网址:https://blog.csdn.net/qq_42214953/article/details/105087015 关于途中的执行文件,可以使用b2.exe,不用跟着教程走. 如果本来就有b ...

  4. VS 2010配置Qt 4.8.5

    由于早上偶然的一个念想,今天的宝贵时光就奉献给了Qt的安装及其和VS 2010的配置上了. 说实话,开始时真的查找了资料,包括博客.文库.知道等等,作者们写得都很全面,细致. 但自己动手尝试就是错误百 ...

  5. linux下配置QT(很全的步骤,从下载开始,配置QMAKESPEC)

    一.下载Qt源码包到本机,然后解压缩#tar zxvf qt-x11-opensource-src-4.3.2.tar.gz -C /usr/local //将qt-x11-opensource-sr ...

  6. Qt库的静态编译

    一.准备软件1. MinGW     (C:\Qt\MinGW)http://pan.baidu.com/share/link?shareid=174269&uk=673227135这个文件解 ...

  7. Linux 下编译、安装、配置 QT

    转自Linux 下编译.安装.配置 QT 注意:编译安装耗时费力,且很容易出错,要不断调整编译参数,不推荐使用,否则这将会是一个纠结痛苦的过程. 打算做嵌入式图像处理,计划方案嵌入式Linux+Ope ...

  8. Linux下配置QT环境

    一.下载Qt源码包到本机,然后解压缩 #tar zxvf qt-x11-opensource-src-4.3.2.tar.gz -C /usr/local //将qt-x11-opensource-s ...

  9. 1.新手上路:Windows下,配置Qt环境

    个人体会: 我最初只是想看看C++除了"黑窗口"之外,怎么才能做一些"更好看的东西".之后在网上看到有人推荐Qt,就看了一下官网(https://www.qt. ...

  10. 支持源码单步调试QT库编译笔记

    支持源码单步调试QT库编译笔记 编译环境:windows 10 编译工具:mingw_4_4_0 Qt源码版本:qt-everywhere-opensource-src-4.8.5(下载地址:http ...

随机推荐

  1. [转帖]mvcc多版本并发控制的原理

      https://baijiahao.baidu.com/s?id=1751185558149315946 MVCC多版本并发控制的原理:通过undo_log多版本链条,加上开启事务时产生的read ...

  2. [转帖]Armv9 架构相比 Armv8 有何升级/区别:全面性能提升

      https://baijiahao.baidu.com/s?id=1695708603852200216&wfr=spider&for=pc 自 2011 年 10 月 Arm 首 ...

  3. [转贴]细说:Unicode, UTF-8, UTF-16, UTF-32, UCS-2, UCS-4

    细说:Unicode, UTF-8, UTF-16, UTF-32, UCS-2, UCS-4 https://www.cnblogs.com/malecrab/p/5300503.html 1. U ...

  4. 责任链和策略设计模式-基于Java编程语言

    作者:京东物流 钟磊 1 前言 最近在梳理接口逻辑的时候发现,代码中使用的策略和责任链设计模式给我留下了非常深刻的印象.一个业务逻辑流程通常非常适合使用责任链和策略设计模式来实现,因为一个业务需求通常 ...

  5. git有关commit的命令

    2.更改最近一次(本次) commit 的提交信息: 当我们执行 git add . git commit -m "0-0-1" 之后我们发现自己写的提交信息是不符合项目要求的,这 ...

  6. RC4加密技术探究:优缺点与实战应用

    引言 在网络安全领域,加密技术一直是保障数据安全的重要手段.Rivest Cipher 4(简称RC4)作为一种对称加密算法,自20世纪80年代以来广泛应用于各种网络安全协议中.本文将详细分析RC4加 ...

  7. YiGo学习(一)YiGo介绍

    YiGo是一种开发语言,是一种面向业务人员进行管理信息系统开发的特定领域语言,属于第五代计算机语言.它可以在图形化界面上进行选择.拖拽等动作进行管理业务建模,通过建立对系统需求的描述模型由计算机自动生 ...

  8. Unity2019使用Android Studio 4出安卓包

    前言 在我所经历的项目组中有这几种方法来生成APK 直接在Unity生成APK,可以接入SDK 使用Unity导出Android Studio工程手动生成APK 使用Unity导出Android St ...

  9. 【C语言深度解剖】一篇搞懂结构体内存对齐【结构体的大小你会算了吗】

    结构体内存对齐 大家好,我是西城s 文章目录 前言 引入 结构体内存对齐 `offsetof`宏的使用 为什么存在结构体内存对齐 修改默认对齐数 尾声 前言 作者: #西城s 这是我的主页:#西城s ...

  10. .NET 云原生架构师训练营(模块二 基础巩固 引入)--学习笔记

    2.1 引入 http协议 web server && web application framework .net 与 .net core asp .net core web api ...