我已经用C++创建了一个包含Code::块的简单程序。
如果我从Code::Blocks运行它,它可以正常工作;但是如果我通过双击可执行文件来运行它,则会弹出一个窗口,其中显示以下消息:
程序无法启动,因为您的计算机中缺少libgcc_s_dw2-1.dll。
尝试重新安装程序以解决此问题。
那么,问题出在哪里呢?我要怎么做才能修复它?
发布于 2011-01-16 08:38:30
我相信这是MinGW/gcc编译器的问题,而不是Microsoft Visual Studio的安装问题。
libgcc_s_dw2-1.dll
应该在编译器的bin目录中。您可以将此目录添加到PATH环境变量中以进行运行时链接,也可以通过在编译器标志中添加"-static-libgcc -static-libstdc++“来避免该问题。
如果您计划分发可执行文件,则后者可能是最有意义的。如果您只打算在自己的机器上运行它,那么更改PATH环境变量是一个有吸引力的选择(减小可执行文件的大小)。
更新:
根据Greg Treleaven的反馈(参见下面的评论),我添加了以下链接:
[Screenshot of Code::Blocks "Project build options"]
后面的讨论包括-static-libgcc
和-static-libstdc++
链接器选项。
发布于 2011-12-22 16:52:41
在Eclipse中,您可以在项目属性> C/C++ Build > Settings > MinGW C++ Linker > Misc下找到它
您必须将其添加到顶部的“链接器标志”中,而不能添加到其他位置。那就重建吧。
我发现,即使进行了优化,静态链接的大小也会达到1400kb。与仅仅复制共享的DLL相比,它要大277kb。在UPXing一切之后,它也大了388kb。在这里非常失败/失败。只需包含这些DLL,因为如果他们在其他地方安装了这些DLL,最终用户可以决定是否删除它们。
发布于 2013-01-21 01:10:27
代码::块:在设置->编译器->链接器设置->其他链接器选项中添加'-static‘。
https://stackoverflow.com/questions/4702732
复制相似问题