我该去哪里获取libgcc_s_dw2-1.dll文件?

6
我写的程序使用SFML,但在运行时失败,因为缺少libgcc_s_dw2-1.dll。我正在使用tdm-gcc,在我的电脑上找不到这个文件,重新安装也没有帮助,而一个简单的hello world程序却可以正常工作,所以我不确定为什么它需要这个dll。
这个dll在哪个mingw包中可以找到?我已经在网站上搜索了一下,但没找到。如果我错过了一个明显的搜索结果,那我很抱歉,这真的让人非常沮丧!提前感谢您的帮助,ell。
附注:顺便说一下,我用的是64位Windows 7。
编辑:对不起,我忘了提到我已经阅读了与同样问题的另一个问题的答案,但正如我所说,我在电脑上无法找到这个文件,无论是在bin目录还是其他地方。另外,将-static-libgcc和-static-libstdc++传递给编译器和/或链接器会给我unrecognized option '-static-libstdc++'。对于没有澄清我已经阅读过这篇文章,我感到抱歉。谢谢!
2个回答

4
我认为这是一个tdm/gcc编译器问题,而不是Microsoft Visual Studio设置的问题。 libgcc_s_dw2-1.dll 应该在编译器的bin目录中。您可以将此目录添加到PATH环境变量以进行运行时链接,或者您可以通过在编译器标志中添加"-static-libgcc -static-libstdc++"来避免此问题。 如果您计划分发可执行文件,则后者可能是最明智的选择。如果您只打算在自己的机器上运行它,则更改PATH环境变量是一个有吸引力的选项(可以减小可执行文件的大小)。 更新: 根据Greg Treleaven的反馈(请参见下面的评论),我正在添加以下链接: {{link1:[Code :: Blocks“项目构建选项”的屏幕截图]}} {{link2:[GNU gcc链接选项]}} 后一讨论包括-static-libgcc-static-libstdc ++链接器选项。

我认为链接到另一个问题比仅仅复制和粘贴更合适,特别是如果编辑是基于尚未存在的评论。无论如何,还是谢谢你。 - Ell

4
该文件使用DWARF信息实现异常处理(新风格,与setjump / longjump或SJLj旧风格不同)。
因此,只有在您的代码依赖于任何类型的异常时才需要它。
如果你感觉幸运,你可以从这里获取我的编译版本 here

谢谢!你知道你从哪里得到那个 .dll 吗? - Ell
@Ell - 其实我是从源代码编译了整个MinGW!是从Ubuntu盒子进行交叉编译的。这是一个棘手的任务,但非常有教育意义。我一直在考虑写一篇关于它的博客文章,但从未有足够的决心... - rodrigo
哇,那听起来很棘手!如果你最终写了一篇关于它的博客文章,请告诉我,这样我就可以阅读它了! - Ell
不幸的是,这给了我“在动态链接库libstdc++-6.dll中找不到过程入口点__gxx_personality_v0”的错误。当我从预构建的MinGW复制dll时,也出现了相同的错误。 - Halil
你可以在 mingw-w64-i686-gcc-libs 中找到相同的文件。 - mirh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接