程序找不到libgcc_s_dw2-1.dll

Gre*_*ven 30 c++ mingw codeblocks static-linking

可能重复:
程序无法启动,因为缺少libgcc_s_dw2-1.dll

我正在使用Code :: Blocks和MinGW 4.4(我认为)编译器来创建一个C++项目.如果我从它的目录运行它,而不是从Code :: Blocks中运行,我会收到此系统错误.

The program can't start because libgcc_s_dw2-1.dll is missing from your computer.  Try reinstalling the program to fix this problem.
Run Code Online (Sandbox Code Playgroud)

这篇文章中, hardmath表示要添加-static-libgcc到编译器标志,静态链接到dll.当我尝试这个时,错误仍然发生.我可以通过将MinGW bin目录添加到我的计算机的Path变量来实现它,但我计划通过互联网分发我的程序.

该问题仅在更新到最新的G ++编译器后出现.除了我之外,这个解决方案为其他所有人工作的原因是什么?

rub*_*nvb 49

链接命令行参数-static-libgcc应该有效.您可以尝试的另一种变体是简单的-static.

如果您不想担心这一点,并且仍想重新分发二进制文件,只需从MinGW的bin目录中复制相关的dll并将其放在可执行文件旁边.这是常见的做法,并按照宣传的方式工作.

  • 请注意,使用`-static`将破坏跨DLL边界抛出异常. (6认同)
  • @ user286101是不真实的,请阅读"我使用专有的编译器工具链而不使用GCC的任何部分来编译我的程序,并将其链接到libstdc ++."[官方常见问题解答](http://www.gnu.org) /licenses/gcc-exception-faq.html) (4认同)
  • 使用`-static`工作!非常感谢!:) (2认同)
  • 用libgcc_s_sjlj-1.dll发生在我身上 - 同时-static-libgcc -static-libstdc ++解决了这个问题. (2认同)