如标题所说,在 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. [转帖]Unix Domain Socket– IPC通信机制

    什么是Unix Domain Socket 基于socket的框架上发展出一种IPC机制,就是UNIX Domain Socket.虽然网络socket也可用于同一台主机的进程间通讯(通过loopba ...

  2. [转帖]alertmanager的使用

    https://www.jianshu.com/p/654d59325550 一.Alertanager的安装 1.下载   下载altermanager 2.安装 # 不同的平台下载不同的安装包 w ...

  3. [转帖] 在Linux上查看活跃线程数与连接数

    https://www.cnblogs.com/codelogs/p/17178675.html   原创:扣钉日记(微信公众号ID:codelogs),欢迎分享,非公众号转载保留此声明. 简介# 现 ...

  4. [转帖]使用SkyWalking监控nginx (以openresty为例)

    https://www.cnblogs.com/hahaha111122222/p/15829737.html 安装使用SkyWalking先看这篇文章,地址:https://www.cnblogs. ...

  5. [转帖]Linux 学习笔记: shell中${} 的用法,删除&替换

    Linux 学习笔记: shell中${} 的用法,删除&替换 字符串的删除 echo${i##*/} 删除 / 前的所有内容 ## 删除 tt=$i echo{tt:22} #取的22位以后 ...

  6. 依据HTML标准再探Javascript事件循环及其与浏览器渲染的关系

    Javascript的一些基础概念 JavaScript执行引擎在宿主环境中是单线程的,这意味着在同一时间内只能执行一个任务.在Javascript运行期间,引擎会创建和维护相应的堆(heap)和栈( ...

  7. elementui 的tabs组件出现蓝色边框问题

    elementui 的tabs组件出现蓝色边框问题 /deep/ .el-tabs__item:focus.is-active.is-focus:not(:active) { -webkit-box- ...

  8. 复原docker中容器的启动命令

    复原 docker 容器的启动命令 前言 查看 docker 容器的启动命令 参考 复原 docker 容器的启动命令 前言 不规范的操作,在启动 docker 容器,没有留命令脚本,或者没有使用 d ...

  9. 3.2 IDAPro脚本IDC常用函数

    IDA Pro内置的IDC脚本语言是一种灵活的.C语言风格的脚本语言,旨在帮助逆向工程师更轻松地进行反汇编和静态分析.IDC脚本语言支持变量.表达式.循环.分支.函数等C语言中的常见语法结构,并且还提 ...

  10. MySQL8.0清空binlog

    环境 centos7.9 mysql  Ver 8.0.32 登录MySQL,查看binlog日志 #查看binlog日志开启状态,log_bin值为ON表示开启状态 mysql> show v ...