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

xRo*_*bot 157 c++ windows mingw

我使用Code :: Blocks在C++中创建了一个简单的程序.

如果我从Code :: Blocks运行它,它可以正常工作; 但如果我通过双击可执行文件来运行它,会弹出一个窗口,显示以下消息:

程序无法启动,因为您的计算机缺少libgcc_s_dw2-1.dll.
尝试重新安装该程序以解决此问题.

那么,问题是什么?我该怎么做才能修复它?

har*_*ath 191

我相信这是一个MinGW/gcc编译器问题,而不是Microsoft Visual Studio安装程序.

libgcc_s_dw2-1.dll应在编译器的bin目录.您可以将此目录添加到PATH环境变量以进行运行时链接,也可以通过在编译器标志中添加"-static-libgcc -static-libstdc ++"来避免此问题.

如果您计划分发可执行文件,后者可能最有意义.如果您只打算在自己的机器上运行它,那么更改PATH环境变量是一个很有吸引力的选项(保持可执行文件的大小).

更新:

根据Greg Treleaven的反馈(见下面的评论),我正在添加链接:

[Code :: Blocks"项目构建选项"的屏幕截图]

[GNU gcc链接选项]

后面的讨论包括-static-libgcc-static-libstdc++链接器选项.

  • 这个讨论继续(并且已经解决)[这里](http://stackoverflow.com/questions/4984612/program-cant-find-libgcc-s-dw2-1-dll). (4认同)

小智 37

在Eclipse中,您可以在项目属性> C/C++ Build> Settings> MinGW C++ Linker> Misc下找到它

您必须将其添加到顶部的"链接器标志"; 无处.然后重建.

Eclipse属性截图

我发现,即使经过优化,将这些静态链接也可以扩展到1,400kb.与仅复制共享DLL相比,它大277kb.在UPXing之后,它也增加了388kb.在这里非常输/输.只需包含DLL,因为最终用户可以决定是否删除它们,如果他们在其他地方安装了它们.


小智 9

Code :: Blocks:在settings-> compiler-> Linker settings->其他链接器选项中添加'-static'.

  • 这对于我来说对于标题中“丢失”的 dll 非常有效,它是如此快速和简单,我建议先尝试一下这个。 (3认同)
  • 最好的解决方案! (2认同)
  • 这确实应该是公认的解决方案!快捷方便。 (2认同)

Dav*_*ave 6

在您的PC上找到该DLL,并将其复制到您的可执行文件所在的目录中.


fat*_*fat 6

。它解决了我的问题。

顺便说一句,肯定是compiler旗帜吗?也许linker这里更合适的术语?


小智 5

复制"libgcc_s_dw2-1.dll"为make.exe.(如果您使用的是Msys,请将其复制到\ msys\bin)确保在env中设置了make.exe的路径.路径(如果make.exe在文件夹"bin"中,很可能,你有msys,它是\ msys\bin)编译,运行,调试等等.


小智 5

转到 MinGW http sourceforge.net 树。在 Home/MinGW/Base/gcc/Version4(或正在使用的任何版本)/gcc-4(version)/ 下,你会找到一个像 gcc-core-4.8.1-4-mingw32-dl​​l.tar.lzma 这样的文件. 解压并进入 bin 文件夹,您将在其中找到 libgcc_s_dw2-1.dll 和其他 dll。将您需要的内容复制并粘贴到您的 bin 目录中。


rog*_*ack 5

通过为编译器使用“ gcc”而不是“ g ++”,我能够克服这一问题。我知道对于大多数人来说这不是一个选择,但我想我会把它作为解决方法:)