MSVC即Microsoft Visual C++ Compiler,即微软自己的编译器。MinGW则是指Minimalist GNU for Windows的缩写它是将GNU开发工具移植到Win32平台下的产物,即一套Windows上的GNU工具集。
一、两者的区别
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