【发布时间】:2020-12-12 01:13:10
【问题描述】:
我正在用 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++ 库”。
MSVCRT.DLL是 Microsoft Visual C++ Runtime,Windows 没有预装,所以需要安装。很有可能,其他软件已经为您安装了它。另一方面,如果你编译你的应用程序以使用这个库的静态版本而不是动态版本,那么你根本不需要 DLL。 -
@RemyLebeau 你有这个说法的来源吗?我很难相信 Windows 10 默认不附带任何 MVCR。
-
Visual Studio 2015+ 运行时确实预装在 Windows 10 上,但 gcc 只能使用 libstdc++,您需要使用 Visual Studio 或 clang 才能使用 Visual Studio 运行时