首页 > 解决方案 > 全新安装的 Windows 是否包含标准 C++ 库?

问题描述

我正在用 Mingw-w64 做一些实验,它可以很好地编译常规 C 代码,链接到 Windows 系统 MSVCRT.DLL C 库。但是,如果我编译 C++ 代码,那么 mingw 的 g++ 链接到看起来像 GNU libstdc++ 库的东西。为什么?常规 C 二进制文件不会发生这种情况。我一直看到商业 Windows 软件,包括 Microsoft “C++ redist”软件包,我猜它与他们用于开发软件的 Visual C++ 版本相匹配。因此,Windows 上似乎默认没有 C++ 库。如果可能的话,我想使用“系统”C++ 库而不是使用 GNU 库来减小 mingw 正在编译的二进制文件的大小。但是,我也不想要需要安装的单独的 C++ 可再发行组件。我是否坚持使用 GNU 库?

标签: c++cwindowsgccmingw

解决方案


MinGW/MinGW-w64 构建确实使用系统标准库,它们是 Windows 的一部分。

仅当使用 MSVC 编译源时才需要 Visual C++ 可再发行包和运行时包。

如果您的 MinGW/MinGW-w64 构建不是静态链接的,您可能需要发送 libstd DLL 文件,但您可以将它们与您的 .exe 和/或 .dll 文件以及任何其他依赖项 .dll 放在同一位置文件。

我真的很喜欢 MinGW/MinGW-w64 构建不需要 Visual C++ 可再发行组件的事实,原因如下:

  • 用户不需要再安装另一个 Visual C++ 可再发行组件。
  • 二进制文件很紧凑,不依赖于操作系统中的其他 Microsoft 库,这增加了您的软件在不同 Windows 版本上运行良好的机会。
  • 安装(和卸载)说明(或安装程序代码)更容易,因为不需要安装 Visual C++ 可再发行依赖项。事实上,您甚至可以将您的软件作为便携式应用程序运行,而无需安装程序。

推荐阅读