MSVC与MinGW的区别

博客介绍了Qt的两种编译方式,MinGW和MSVC。MSVC是微软的VC编译器,MinGW是Windows特定头文件和GNU工具集导入库集合。二者兼容性不佳,使用MinGW编译项目需搭配MinGW编译的Lib。开发Windows平台软件,建议用Qt MSVC组合。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Qt 中有两种方式编译,一种是MinGW ,另一种MSVC。

  1. MSVC是指微软的VC编译器。
  2. MinGW是指是Minimalist GNU on Windows的缩写。它是一个可自由使用和自由发布的Windows特定头文件和使用GNU工具集导入库的集合,允许你在GNU/Linux和Windows平台生成本地的Windows程序而不需要第三方C运行时库。
  3. 它们都是很好用的编译工具,但是它们兼容的并不好。当你的项目使用MinGW编译的使用,想要用一个MSVC编译生成的库时就会有问题。使用MinGW编译项目的时候,所使用的Lib也要是MinGW编译的。如果你只是开发Window平台的软件时,最好用Qt MSVC组合,这样可以使用大量的第三方lib,还有很多的构建指令,毕竟window上MSVC才是王道。
### Qt 编译器差异分析 #### MSVC MinGW 编译器概述 MSVC(Microsoft Visual C++)编译器由微软提供,专为 Windows 平台设计。此编译器支持最新的 Windows API 功能以及特定于 Windows 的优化技术[^1]。 MinGW(Minimalist GNU for Windows)是一个用于创建本地 Windows 应用程序的轻量级开发环境。它基于 GCC(GNU Compiler Collection),能够生成不依赖外部运行库的标准 Windows 可执行文件[^2]。 #### 运行时库的区别 MSVC 使用自己的运行时库 `msvcrt` 或更新版本如 `ucrt` `vcruntime`,这些库提供了标准 C/C++ 函数实现并紧密集成到操作系统中。相比之下,MinGW 主要依靠 Glibc 或其变体来提供类似的接口服务[^3]。 #### 异常处理机制的不同 MSVC 支持结构化异常处理(SEH),这是 Windows 特有的错误恢复方法;而 MinGW 则采用更通用的语言级别异常捕获方式,即通过 try-catch 块来进行异常管理[^4]。 #### 多线程模型的选择 对于多线程应用程序,在选择 MinGW 构建工具链时可以选择 POSIX 风格或多线程 Win32 API 实现作为底层支撑。POSIX 线程通常被认为更加灵活且跨平台友好,但可能不如原生 Win32 方案高效[^5]。 ```cpp // 示例:使用不同的线程库编写简单的多线程应用 #ifdef _WIN32 #include <windows.h> void CreateThreadExample() { HANDLE hThread; DWORD threadID; hThread = CreateThread(NULL, 0, ThreadFunc, NULL, 0, &threadID); } #else // Unix-like systems including those using MinGW with POSIX threads #include <pthread.h> void PthreadCreateExample() { pthread_t tid; pthread_create(&tid, NULL, ThreadFunc, NULL); } #endif ```
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值