gpt4 book ai didi

c++ - 分发使用 MinGW g++ 编译的程序

转载 作者:可可西里 更新时间:2023-11-01 18:19:56 27 4
gpt4 key购买 nike

假设我使用 MinGW 64(g++ 编译器)创建并编译了一个简单的程序。在我的计算机上运行此程序并在 Process Explorer 中查找程序正在使用的 DLL 文件,我发现(以及许多其他文件):

libgcc_s_seh-1.dll
libstdc++6.dll
libwinpthread-1.dll

这些是唯一位于我的 MinGW 安装文件夹下的。使用的其余 DLL 文件位于 C:\Windows 下。

问题 1:

MinGW DLL 文件是 MinGW C++ 运行时库(可以这么说)吗?它们的用途是否与例如 msvcrXXX.dll(XXX = Microsoft 运行时库的版本)相同。

问题 2:

如果我想在另一台没有安装 MinGW 的计算机上运行该应用程序,是否足以包含上面列出的那些 DLL 文件(即将它们与我的可执行文件放在同一文件夹中)以使其在另一台计算机上运行计算机(我们假设另一台计算机也是 64 位 Windows 计算机)。如果是,这是否意味着我们基本上将 MinGW C++ 运行时与我们的可执行文件一起发布。如果不是,为什么?

最佳答案

libstdc++6.dll 是 C++ 标准库,如您所说。

libwinpthread-1.dll 用于 C++11 线程支持。 MinGW-W64 有两种可能的线程变体:要么使用像 CreateThread 这样的 native Windows 函数,但是那时像 std::thread 这样的 C++11 东西将不可用;或包含此库并使用 C++11 类(也)。
请注意,要切换线程模型,您需要重新安装 MinGW。仅删除 DLL 而不使用 C++11 的东西是行不通的,尽管如此,您当前的安装仍需要 DLL。

libgcc_s_seh-1.dll 是关于 C++ 异常处理的。

是的,交付 DLL 也应该足够了
(或使用静态链接并仅提供您的程序文件)。

关于c++ - 分发使用 MinGW g++ 编译的程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31449769/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com