Qt MinGW / MSVC

MinGW/MSVC的关系

  • [MinGW / MSVC](#MinGW / MSVC)
  • [.dll / .lib / .a 的关系](#.dll / .lib / .a 的关系)

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项目文件中添加以下代码:

cpp 复制代码
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项目文件中添加一下代码:

cpp 复制代码
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

或者通过图形界面直接添加库:

相关推荐
rqtz4 分钟前
【机器人】ROS结合Qt开发上位机软件工作空间配置
开发语言·qt·ros
代码中介商10 小时前
C++左值与右值:核心判断法则详解
开发语言·c++
JAVA96511 小时前
JAVA面试-并发篇 05-并发包AQS队列实现原理是什么
java·开发语言·面试
Halo_tjn11 小时前
反射与设计模式1
java·开发语言·算法
珊瑚里的鱼12 小时前
手撕单例模式中的饿汉模式和懒汉模式,懒汉模式还要再多加一个C++11版本的
开发语言·c++·单例模式
_不会dp不改名_12 小时前
python-opencv环境搭建
开发语言·python·opencv
HappyAcmen12 小时前
9.复盘API全套流程
开发语言·python
charlie11451419112 小时前
通用GUI编程技术——图形渲染实战(四十五)——D3D12资源与堆管理:从上传到驻留
开发语言·3d·图形渲染·win32
不会C语言的男孩12 小时前
C++ Primer 第12章:动态内存
开发语言·c++
踏着七彩祥云的小丑13 小时前
Go学习第1天:入门
开发语言·学习·golang·go