Qt MinGW / MSVC

MinGW / MSVC

Qt 中有两种方式编译:一种是MinGW ,另一种MSVC,是两种不同的编译器。

  1. MinGW(Minimalist GNUfor Windows),它是一个可自由使用和自由发布的Windows特定头文件和使用GNU工具集导入库的集合,允许你在Windows平台生成本地的Windows程序而不需要第三方C运行时(C Runtime)库。
  2. MSVC,是第三方C运行时库:由微软开发的VC运行时库,被Visual Studio IDE所集成。所以我们使用VS时会附带MSVC编译器。
  3. 它们都是很好用的编译工具,但是它们兼容的并不好。当你的项目使用MinGW编译的使用,想要用一个MSVC编译生成的库时就会有问题。使用MinGW编译项目的时候,所使用的Lib也要是MinGW编译的。如果你只是开发Window平台的软件时,最好用Qt MSVC组合,这样可以使用大量的第三方lib,还有很多的构建指令。我认为在任何平台下,越贴近原生的东西总能得到更多的优化,MinGW始终不是Windows亲生的,bug比亲生的VS多很正常。

.dll / .lib / .a 的关系

在调用第三方库时总会遇到这几个格式的文件,总结一下

  • .lib:用于MSVC编译器中 (MSVC 微软自己的编译器)
  • .dll / .a:用于MinGW编译器中(MinGW gcc/g++,MinGW则是指Minimalist GNU for Windows的缩写)
  • dll:真正存放函数体的地方,所有代码内容都在dll里面,.lib里面只有符号信息。

在使用Qt MinGW编译器是需要用到.a文件以及include文件夹,以OpenCV动态库为例,需要在.pro项目文件中添加以下代码:

INCLUDEPATH += D:\Git\OpenCV-MinGW-Build-OpenCV-4.0.1-x64\include
LIBS += D:\Git\OpenCV-MinGW-Build-OpenCV-4.0.1-x64\x64\mingw\lib\lib*.a

在使用Qt MSVC编译器时需要用到.lib文件以及include文件夹,以OpenCV动态库为例,需要在.pro项目文件中添加一下代码:

win32:CONFIG(release, debug|release): LIBS += -LD:/OpenCV/opencv/build/x64/vc15/lib/ -lopencv_world410
else:win32:CONFIG(debug, debug|release): LIBS += -LD:/OpenCV/opencv/build/x64/vc15/lib/ -lopencv_world410d

或者通过图形界面直接添加库:
在这里插入图片描述

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
引用\[1\]中提到了在切换QT5 MinGWMSVC编译时遇到的问题,引用\[2\]中提到了编码的问题,以及QT5的Qstring默认是UTF8格式,而MSVC只支持带BOM的UTF8格式。引用\[3\]中提到了MSVC是微软自己的编译器,可以直接运行不需要编译。根据这些信息,可以得出qt mingwmsvc的区别如下: 1. 编译器:QT MinGW使用MinGW编译器,而MSVC使用微软自己的编译器(Microsoft Visual C++ Compiler)。 2. 编码支持:QT MinGW默认使用UTF8编码,而MSVC只支持带BOM的UTF8编码。因此,在使用MSVC编译时,需要注意编码的转换。 3. 依赖库:在使用MSVC编译时,可以直接使用Windows下的OpenCV库,而不需要进行编译。这是因为MSVC的编译器与Visual Studio的版本有对应关系,可以直接运行。 总结起来,QT MinGWMSVC的区别主要在于编译器和编码支持方面。选择使用哪种编译器取决于项目的需求和开发环境的配置。 #### 引用[.reference_title] - *1* [QT5 MinGW切换MSVC编译问题](https://blog.csdn.net/xinlongabc/article/details/121708435)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Qt编译器MinGWMSVC的区别](https://blog.csdn.net/qq_43445867/article/details/127889570)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Windows下的Qt编译器——MinGWMSVC的区别](https://blog.csdn.net/flowerspring/article/details/116924437)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值