【问题标题】:QT The program can't start because libgcc_s_dw2-1.dll is missingQT程序无法启动,因为缺少libgcc_s_dw2-1.dll
【发布时间】:2016-01-13 06:09:17
【问题描述】:

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

我只有一个小小的 hello world 控制台程序,基本上是我用 qt creator 用 c++ 编写的。当我尝试运行可执行文件时,我得到“程序无法启动,因为您的计算机中缺少 libgcc_s_dw2-1.dll。请尝试重新安装以解决此问题。”

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

QMAKE_CXXFLAGS += -static -static-libgcc -static-libstdc++

它仍然会发生。其他人建议将 dll 所在的目录添加到我的路径中,但我想在不需要 dll 的情况下将这个程序实际提供给其他人。

【问题讨论】:

  • -static 应该足够了,如果它仍然依赖于libgcc dll然后使用依赖walker查看问题出在哪里,链接时找不到静态libgcc lib所以链接器是依赖 dll,或者其他一些组件依赖于它(需要使用静态库重新编译)。
  • qmake 默认链接 libgcc,无论你的应用程序有多大,因为这个 lib 包含 C++ 运行时。

标签: c++ qt dll


【解决方案1】:

我知道这是一个老问题,您可能找到了适合您的解决方案,但在尝试使用 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。 :)

【讨论】:

    【解决方案2】:

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

    运行设置部分中, 在Working directory下点击Run in Terminal复选框。

    【讨论】:

      猜你喜欢
      • 2011-06-09
      • 2013-03-15
      • 1970-01-01
      • 2011-08-01
      • 2012-01-03
      • 2019-03-21
      • 2017-09-04
      • 2014-07-10
      • 2019-01-12
      相关资源
      最近更新 更多