首页 > 解决方案 > Qt 5.14 MinGW 工具链中的静态库?(默认 Qt 安装)

问题描述

刚才我注意到默认 Qt 安装(至少 Qt 5.14)附带的 MinGW Toolchain 带有一个包含文件的lib目录。libQt5*.a这些文件是静态库吗?

我这么认为是因为:

  1. 它们的大小与我静态编译 Qt 以进行发布时得到的大小相似。
  2. $file ./libQt5Core.a输出./libQt5Core.a: current ar archive,这与它为静态编译的输出相同。

如果它们确实是静态库,我如何告诉 QMake(例如编辑.pro文件)链接到那些而不是链接到共享的?

Qt 静态库的 Windows 屏幕截图

标签: c++qtqt5static-librariesstatic-linking

解决方案


这些文件是静态库吗?

不,它们不是静态的。Qt 的默认在线安装程序仅提供共享库。该 *.a 文件是所谓的导入库。

导入库是一个 .a 或 .lib 库,但它只包含告诉链接器/操作系统您的程序如何与 dll 交互所需的一些信息。

如果您出于某些原因需要构建 Qt 静态窗口,您有一些选择:

  • HARD自己构建整个 Qt(或需要的模块)。

  • 轻松使用vcpkgvcpkg install qt5:x64-windows-static

如果出于某种原因需要 MinGW,可以使用 vcpkg 创建自定义 MinGW三元组。但我建议你坚持使用 MSVC。


推荐阅读