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的反馈(见下面的评论),我正在添加链接:
后面的讨论包括-static-libgcc和-static-libstdc++链接器选项.
小智 37
在Eclipse中,您可以在项目属性> C/C++ Build> Settings> MinGW C++ Linker> Misc下找到它
您必须将其添加到顶部的"链接器标志"; 无处.然后重建.

我发现,即使经过优化,将这些静态链接也可以扩展到1,400kb.与仅复制共享DLL相比,它大277kb.在UPXing之后,它也增加了388kb.在这里非常输/输.只需包含DLL,因为最终用户可以决定是否删除它们,如果他们在其他地方安装了它们.
小智 9
Code :: Blocks:在settings-> compiler-> Linker settings->其他链接器选项中添加'-static'.
小智 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-dll.tar.lzma 这样的文件. 解压并进入 bin 文件夹,您将在其中找到 libgcc_s_dw2-1.dll 和其他 dll。将您需要的内容复制并粘贴到您的 bin 目录中。