C++ QT程序可以';无法启动,因为缺少libgcc_s_dw2-1.dll

C++ QT程序可以';无法启动,因为缺少libgcc_s_dw2-1.dll,c++,qt,dll,C++,Qt,Dll,我知道以前有人问过这个问题,但我似乎找不到答案 我只是有一个小小的Hello Houter控制台程序,基本上我用QT创建者用C++编写。当我尝试运行可执行文件时,我得到“程序无法启动,因为您的计算机缺少libgcc__dw2-1.dll。请尝试重新安装以修复此问题。” 我不明白为什么像这样的小程序需要这个dll。我尝试按照其他地方的建议添加这些标志: QMAKE_cxflags+=-static-static libgcc-static libstdc++ 但这种情况仍然存在。其他人建议将dll

我知道以前有人问过这个问题,但我似乎找不到答案

我只是有一个小小的Hello Houter控制台程序,基本上我用QT创建者用C++编写。当我尝试运行可执行文件时,我得到“程序无法启动,因为您的计算机缺少libgcc__dw2-1.dll。请尝试重新安装以修复此问题。”

我不明白为什么像这样的小程序需要这个dll。我尝试按照其他地方的建议添加这些标志:

QMAKE_cxflags+=-static-static libgcc-static libstdc++


但这种情况仍然存在。其他人建议将dll所在的目录添加到我的路径中,但我想实际将此程序提供给其他人,而他们不需要dll。

我知道这是一个老问题,您可能找到了一个适合您的解决方案,但在花了一天的时间尝试构建静态链接后,我偶然发现了这一点(独立)具有Qt 5.9.1/MinGW32-5.3.0-32位的应用程序

在构建了Qt的静态版本之后,MinGW/GCC最终引入了这些动态链接库,这仍然让我望而却步:

libgcc_s_dw2-1.dll
libwinpthread-1.dll
libstdc++-6.dll
libwinpthread-1.dll
在尝试了无数种组合之后:

QMAKE_CXXFLAGS += [-static-libgcc | -static-libstdc++ | -static -lstdc++ -lpthread] 
在线程中发现的与此类似的其他编译器参数,最终对我有效的是:

QMAKE_LFLAGS += -static

也就是说,
QMAKE\u LFLAGS
而不是
QMAKE\u cxflags
,现在我的程序只依赖于一堆Windows DLL:)

您需要在QT编辑器中进行以下设置 转到项目选项卡(左侧)编辑项目设置

在“运行设置”部分中,
工作目录下点击复选框,在终端中运行

-static
应该足够了,如果它仍然依赖于libgcc dll,那么使用dependency walker查看问题所在,或者链接时找不到静态libgcc lib,因此链接器会回到dll上,或者其他一些组件依赖于它(而需要用静态库重新编译)。默认情况下,QueLink链接LBGCC,不管应用程序有多大,因为这个LIB包含C++运行时。