当前位置: 首页 > news >正文

使用VS2022开发并部署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工具链制作的部署版本则运行成功。

相关文章:

  • GC的查看
  • OCR技术,金融行业的“数字魔法”✨
  • Python列表全面解析:从基础到高阶操作
  • 前端性能优化2:结合HTTPS与最佳实践,全面优化你的网站性能
  • 普通IT的股票交易成长史--20250429午
  • 误在非开发分支上开发解决方案
  • 大语言模型能否替代心理治疗师的深度拓展研究:fou
  • 通信协议——SPI通信协议
  • 【C++编程入门】:基本语法
  • Discord多账号注册登录:如何同时管理多个账户?
  • 模型上下文协议MCP协议(Model Context Protocol)未来应用场景分析(多智能体协作A2A协议)
  • CA添加删除辅小区信令流程
  • React 第三十五节 Router 中useNavigate 的作用及用途详解
  • 如何在Windows中更改文档默认打开方式
  • 【Leetcode 每日一题】2962. 统计最大元素出现至少 K 次的子数组
  • 从Markdown到专业文档:如何用Python打造高效格式转换工具
  • 文件基础-----C语言经典题目(11)
  • 数据结构(十)---链式队列
  • 一文掌握 npm 基础与常用指令
  • Linux命令使用记录(自用)
  • 庄语乐︱宋代历史是被“塑造”出来的吗?
  • 青海西宁市城西区副区长于媛媛主动投案,接受审查调查
  • 辽宁辽阳火灾3名伤者无生命危险
  • 我国将开展市场准入壁垒清理整治行动
  • 第一集丨《无尽的尽头》值得关注,《榜上佳婿》平平无奇
  • 2025厦门体育产业采风活动圆满举行