Qt编译器MinGW和MSVC的区别

MSVC即Microsoft Visual C++ Compiler,即微软自己的编译器。MinGW则是指Minimalist GNU for Windows的缩写它是将GNU开发工具移植到Win32平台下的产物,即一套Windows上的GNU工具集。

Qt编译器MinGW和MSVC的区别-Worktile社区

一、两者的区别

1、MSVC

即Microsoft Visual C++ Compiler,即微软自己的编译器。

我们下载Windows下的OpenCV时,解压后里面有两个文件夹,一个是build,一个是source,build这个文件夹实际上是官方已经提前给我们编译好了的库,会带两个文件夹VC14,VC15(分别与Visual Studio的版本有对应关系),这两个文件夹下的库可以直接运行不需要编译将VS作为Qt的开发环境也是使用这个编译器的缘故,但是,使用的必须是msvc编译器,不能够跨平台。

2、MinGW

我们都知道GNU在Linux下面鼎鼎大名的gcc/g++,MinGW则是指Minimalist GNU for Windows的缩写它是将GNU开发工具移植到Win32平台下的产物,即一套Windows上的GNU工具集。
用其开发的程序不需要额外的第三方DLL支持就可以在Windows下运行,相对地,不使用动态库导致的就是编译出来的程序大很多。也是可以设置使用静态库的,mingw编译器需要自己手动编译source文件生成库文件,mingw这个编译器能够跨平台,能够在linux、arm等平台使用,这些平台使用的编译器都是g++、gcc。

二、两者优缺点

1、MSVC的优缺点

优点:

qtcreator的debuger有功能缺陷,经常会出现变量无法查看的问题,棘手的bug还是需要在VS环境下进行调试。很多人的开发模式就是qtcreator写代码,VS下面做调试。

缺点:

不能跨平台

编码的问题,QT5的Qstring默认是UTF8格式,QT5极力推介把源码用UTF8格式存储。 但是MSVC只支持带BOM的UTF8格式,qmake不支持带BOM的UTF8格式,逼我只能用GBK么。这样的话,用qt5,每次都要Qstring::fromLocal8bit(“我是中国人”);况且就算BOM问题解决了,源代码是UTF8了。MSVC的执行编码也是GBK

2、MinGW的优缺点

优点:

能跨平台

缺点:

MinGW无法利用生成的dump文件在windbg或VS下面定位到出错的代码

Scene3D在MinGW64位Release和MinGW32位Debug模式下运行直接闪退,而64位Debug和32位Release却正常运行。

动态删除继承QuickItem的对象,有几率导致非法内存访问,可以定位到问题在Qt源码中Renderer中的一处

三、最后的选择

到底选择哪个版本,MinGW 比较方便,配置易上手适合初学者,MSVC功能强大,适合进阶,但是具体项目上要根据依赖的第三方库选择版本。

如果你的第三方库是msvc的,能可能就必须msvc,如果第三方库是mingw的可能就必须mingw。

跨平台开发的话,用的库基本上一定是Linux能用的库,而Linux能用的库一定是在mingw下支持会比较好。(mingw甚至能 include unistd.h 之类的Linux专用头文件),那就优选mingw。

来源:本文为CSDN博主「吻等离子」的原创文章
原文链接:https://blog.csdn.net/qq_43445867/article/details/127889570

延伸阅读

Qt中的各种编译器

1.uic:UI编译器,将.ui文件转化为ui_*.h文件

2.rcc:资源编译器,将.qrc文件转换成qrc_*.h文件

3.moc:元对象编译器,将含有Q_OBJECT的头文件转换成标准.h文件

4.qmake : 把pro文件编译成makefile文件,然后可以调用make命令

5.MSVC:微软VC++编译器

6.MinGW:gcc编译器

来源:本文为CSDN博主「落花东流水」的原创文章
原文链接:https://blog.csdn.net/cnjhk2012/article/details/126789904

文章标题:Qt编译器MinGW和MSVC的区别,发布者:小编,转载请注明出处:https://worktile.com/kb/p/37302

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小编小编认证作者
上一篇 2023年2月7日 下午6:10
下一篇 2023年2月7日 下午6:31

相关推荐

  • 高效需求管理的5个关键步骤

    高效需求管理包含了识别、获取、分析、验证及监督需求的流程。重要步骤有:1、需求识别、2、需求收集、3、需求分析、4、需求验证、5、需求监控。在需求识别**步骤中,关键在于确立项目范围与目标,这涉及与利益相关者进行沟通,收集他们的期望和需求。这是高效需求管理流程中建立基础的环节。 一、需求识别 识别需…

    2023年12月18日
    34200
  • 物业项目管理证书有用吗

    物业项目管理证书显示了人们对于物业管理专业知识和实践技能的认可,有利于提高求职者的就业竞争力和职业发展潜力。1、增加就业机会。2、提升专业水平。3、获得行业认可。4、有利于薪酬增长。5、扩展职业网络。证书可视为对专业知识与经验的量化评价,特别是在物业项目管理方面的具体绩效和能力。例如,3、获得行业认…

    2024年1月8日
    20900
  • oa办公系统排行榜

    工作自动化(OA)办公系统现今在企业管理中扮演了枢纽角色,这些系统提供了文件管理、项目协调和团队互动等多样化功能。排名前列的系统主要有:1、微软Office 365、2、谷歌Workspace、3、钉钉、4、企业微信。其中,微软Office 365因其全面的工具集成和高度的定制性备受推崇,在这个部分…

    2024年1月15日
    50600
  • oa办公自动化系

    标题:探究OA办公自动化系统在现代办公中的作用 OA办公自动化系统在现代办公中具有提高办公效率、优化工作流程、保障数据安全、支持远程协作以及节省成本5个方面的显著作用,这些功能共同构成了该系统对企业的核心价值。在提高办公效率方面,OA系统通过自动化处理日常事务,显著降低了员工完成任务所需的时间。通过…

    2024年1月12日
    23500
  • Scrum冲刺计划会议的最佳实践是什么

    在Scrum方法论中,冲刺计划会议是关键活动之一,其目标是制定一份包含即将执行的工作的冲刺计划。该会议挑选待完成的项目背景下的工作项,并确定它们能否在即将到来的冲刺周期内完成。最佳实践包括:1、确保会议参与者准备充分,2、明确会议目标和议程,3、定义和细化用户故事和任务,4、评估工作负载和可交付成果…

    2023年12月11日
    31700
  • 云计算与虚拟化是什么关系

    云计算与虚拟化的关系有:1、定义不同;2、技术支持不同;3、实现方式不同;4、应用领域不同;5、发展前景不同;6、管理维度不同。其中,定义不同指的是虽然两者都是信息技术的重要部分,但云计算更偏重于服务的提供,而虚拟化则更侧重于资源的管理和调度。 1、定义不同 云计算:云计算是通过网络将庞大的计算处理…

    2023年7月18日
    98700
  • 为什么vscode运行不了js

    Visual Studio Code (VS Code) 无法运行 JavaScript 的原因可能包括缺少或错误配置开发环境、未安装 Node.js、错误的文件扩展名、缺少必要的插件或扩展、或代码本身存在错误。运行 JavaScript 通常需要 Node.js 环境或浏览器支持、正确配置的运行和…

    2024年4月3日
    10100
  • 教程:如何利用人工智能工具提升研发效能

    利用人工智能工具提升研发效能的教程:1、认识人工智能的基本概念;2、研究行业中的最佳实践;3、明确研发需求和痛点;4、机器学习平台的选择;5、自然语言处理工具的应用;6、版本控制和协作工具;7、数据准备和清洗;8、模型训练和调优;9、集成人工智能工具到研发流程;10、模型性能监控;11、处理模型漂移;12、及时更新和优化;13、提供培训和资源等等。

    2023年11月16日
    31700
  • 做工程如何管理好一个项目

    工程项目管理是确保项目按预定质量、成本、时间和安全标准顺利完成的关键。关键要素包括明确项目目标、制定详细的工程计划、有效的资源分配、持续的沟通与合作、以及严格的质量控制。在这些要素中,制定详细的工程计划是至关重要的一步,因为它涉及项目所有阶段的时间线、预算、资源和责任分配。一个高质量的计划能使团队对…

    2024年4月11日
    6500
  • mariadb与mysql的区别

    MariaDB和MySQL的区别在于:1、历史背景不同;2、存储引擎不同;3、数据类型不同;4、插件支持不同;5、开源程度不同。整体对比来看,MariaDB相比MySQL有更多的新特性和改进,但也保留了与MySQL的高度兼容性。 一、历史背景不同 MySQL是一个广泛使用的开源关系型数据库管理系统,…

    2023年5月24日
    3.6K00

发表回复

登录后才能评论
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部