QT程序无法启动,因为缺少libgcc_s_dw2-1.dll文件。

4
我知道这个问题以前已经被问过,但是我似乎找不到答案。
我只是用qt creator写了一个简单的“hello world”控制台程序。当我尝试运行可执行文件时出现“无法启动程序,因为libgcc_s_dw2-1.dll在您的计算机上丢失。请尝试重新安装以解决此问题。”。
我不明白为什么这个dll对于这样一个小程序是必要的。我尝试添加建议中的这些标志:
QMAKE_CXXFLAGS += -static -static-libgcc -static-libstdc++
但问题仍然存在。其他人建议将包含dll的目录添加到我的路径中,但我希望将这个程序直接交给别人而不需要他们安装这个dll。

如果只使用“-static”选项,就足够了。如果仍然依赖于libgcc dll,则可以使用Dependency Walker查看问题所在,可能是链接时找不到静态的libgcc库,因此链接器会退回到dll上,或者其他组件依赖于它(需要使用静态库重新编译)。 - user657267
qmake默认链接libgcc,无论你的应用程序有多大,因为该库包含C++运行时。 - RazrFalcon
2个回答

3
我知道这是一个老问题,你可能已经找到了适合你的解决方案,但在我花了一天时间尝试使用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_LFLAGS代替QMAKE_CXXFLAGS,这样我的程序只依赖于一堆Windows DLL文件。 :)

0

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

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


谢谢您的回答,虽然它与这个问题无关,但对我另一个问题很有帮助。 - Hai Nguyen Van

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接