使用VS2022开发并部署QT应用实现

 更新时间:2025年09月10日 08:24:41   作者:yivifu  
本文介绍了使用MSVC工具链编译和部署QT框架应用程序的环境配置与编译部署过程,

QT Creator默认使用minGW编译QT应用,但是在windows平台上,minGW编译后用QT官方工具(windeployqt)部署,然后移植到没有安装QT运行时的环境中运行,大概率会出现找不到动态链接库或者无法定位链接库入口之类的问题,兼容性不好,因此,选择用MSVC编译并部署QT应用,在windows平台可能是一个更好的选择。

1、相关工具的安装与配置

要使用MSVC编译QT应用,必须先安装与QT版本对应的VS版本。QT6.9支持的VS版本为VS2022。安装完VS2022后,需要进行一些配置。

1.1、VS2022文件编码配置

VS2022默认使用操作系统编码页(中文windows使用936(GBK)),而QT框架的程序源代码最好使用65001(UTF-8无BOM),如果不变更VS2022的默认编码,不但源代码中的中文字符会变成乱码,编译也会失败。处理好VS2022环境编码问题推荐执行以下操作:

1.1.1、修改VS2022环境中文档的默认编码:

这一步修改会使VS2022中创建的新文件会以UTF-8编码保存,打开编码不明的文件时优先以UTF-8编码解析。

1.1.2、创建项目时,可以在项目根目录下创建一个文件名为“.editorconfig”的文件,在其中对编辑器编码等作出规定:

# 明确所在目录是项目根目录,这样编辑器不会向父目录继续寻找.editorconfig 
root = true 

# 以下规则对于所有文件生效,注意中括号不能省
[*]

# 缩进风格,以下两条规则也可以直接用indent_size = 4代替
indent_style = tab 

# 缩进宽度
tab_width = 4 

# 文件编码格式,指定文件编码格式
charset = utf-8

# 行尾格式,Windows一般为CRLF,Linux一般为LF,根据需要更改
end_of_line = crlf 

# 文件结尾添加换行符,以防警告
insert_final_newline = true 

1.1.3、如果编译链接过程中仍然发生编码方面的错误,可以右键点击项目名称,点击“属性”命令打开项目属性页,增加附加选项“/utf-8”,如下图:

1.2、安装QT VS Tools

1.3、安装QT MSVC工具链

打开Qt Maintenance Tool(Qt维护工具)

查看是否安装了MSVC工具链,没有的话勾选并安装:

1.4、配置QT MSVC工具链路径

上一步安装的MSVC工具链路径一般为“path/to/qtroot/version/msvc2022_64”,通过VS2022工具->选项打开选项对话框,在Qt->versions配置项中添加相关路径,并在系统环境变量中将“path/to/qtroot/version/msvc2022_64/bin”加入PATH环境变量。

2、创建项目与编码

在VS2022中创建QT项目,如果是GUI程序,可以搜索并选择“Qt Widgets Application”模板作为项目模板。

项目的编码可以在VS2022中进行,也可以在Qt Creator中进行(它的窗体设计器比较方便)。如果在Qt Creator中编码,完成后将有关文件添加进VS2022的项目中即可。

在项目开发过程中如果要观察qDebug()输出的调试信息,可以临时将链接系统的子系统指定为控制台:

在开发完成后正式编译连接时再改回“窗口 (/SUBSYSTEM:WINDOWS)”。如果子系统仍然指定为“控制台 (/SUBSYSTEM:CONSOLE)”,生成的程序运行时除了显示程序窗体外,还将显示一个控制台窗口。

3、编译

如果要用编译后的结果进行部署,采用Release(发布)配置进行文件的编译。编译过程中如果因为环境变量未正确配置导致找不到include文件与链接库引起编译失败,可以在项目属性页将相关目录添加进项目:

4、部署

上一步编译所得的exe文件离开开发环境并不能独立运行,要使它能够独立运行尚需进行部署。安装完QT Creator的MSVC工具链后,QT官方的适用于MSVC编译器的部署工具就已安装,路径为1.4中要求加入PATH环境变量的“path/to/qtroot/version/msvc2022_64/bin”,文件名为“windeployqt.exe”和“windeployqt6.exe”,顾名思义,后者为支持QT6.*的部署工具。在任意位置创建一个文件夹作为部署文件夹(不要使用其中已包含文件的文件夹,可以使用已有的空文件夹),将编译出的Release版exe文件拷贝到这个文件夹中,以管理员方式打开终端,导航到此目录下,执行如下命令:

windeployqt6 --release --compiler-runtime application_name.exe 

其中,application_name.exe是编译所得的应用程序文件名。这个命令执行完成,部署也就完成了。我用相同的程序代码实测,minGW的部署版本(要用QT Creator默认的minGW工具编译,也要用minGW目录下的windeployqt6部署)拷贝到没有安装QT的windows系统中执行失败,使用MSVC工具链制作的部署版本则运行成功。

到此这篇关于使用VS2022开发并部署QT应用的文章就介绍到这了,更多相关VS2022开发部署QT内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • C++ vector在多线程操作中出现内存错误问题及解决

    C++ vector在多线程操作中出现内存错误问题及解决

    这篇文章主要介绍了C++ vector在多线程操作中出现内存错误问题及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • C语言数组a和&a的区别讲解

    C语言数组a和&a的区别讲解

    今天小编就为大家分享一篇关于C语言数组a和&a的区别讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-02-02
  • Visual Studio 2019 如何新建 Win32项目的方法步骤

    Visual Studio 2019 如何新建 Win32项目的方法步骤

    这篇文章主要介绍了Visual Studio 2019 如何新建 Win32项目的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-03-03
  • c++ cin 作为while条件(详解)

    c++ cin 作为while条件(详解)

    下面小编就为大家带来一篇c++ cin 作为while条件(详解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-05-05
  • C语言实现数学表达式运算

    C语言实现数学表达式运算

    这篇文章主要为大家详细介绍了c语言实现数学表达式运算,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • QT使用Http协议通信的实现示例

    QT使用Http协议通信的实现示例

    使用QT进行应用开发时,有时候需要进行客户端和服务端的网络通信,本文主要介绍了QT使用Http协议通信的实现示例,具有一定的参考价值,感兴趣的可以了解一下
    2023-12-12
  • c++网络编程下Linux的epoll技术和Windows下的IOCP模型

    c++网络编程下Linux的epoll技术和Windows下的IOCP模型

    c++ 网络编程LINUX-epoll/windows-IOCP下socket opoll函数用法 优于select方法的epoll 以及windows下IOCP 解决多进程服务端创建进程资源浪费问题,感兴趣的小伙伴一起来学习吧
    2021-08-08
  • 浅谈C++11中的几种锁

    浅谈C++11中的几种锁

    本文主要介绍了C++11中的几种锁,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01
  • c++ 数组定义及初始化详解

    c++ 数组定义及初始化详解

    这篇文章主要介绍了c++ 数组定义及初始化详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • C++实现判断一个字符串是否为UTF8或GBK格式的方法

    C++实现判断一个字符串是否为UTF8或GBK格式的方法

    这篇文章主要介绍了C++实现判断一个字符串是否为UTF8或GBK格式的方法,涉及C++针对字符编码的遍历、判断、编码转换等相关操作技巧,需要的朋友可以参考下
    2017-11-11

最新评论