6

我编写的程序使用 SFML,但运行时失败,因为libgcc_s_dw2-1.dll缺少。我正在使用 tdm-gcc 并且在我的计算机上的任何地方都找不到该文件并且重新安装没有帮助,一个简单的 hello world 程序工作正常,所以我不确定它为什么需要这个 dll。

可以在哪个 mingw 包中找到它?我在网站上搜索过,但找不到。如果我错过了一个明显的搜索结果,我深表歉意,但这非常令人沮丧!提前谢谢,嗯。

PS 顺便说一句,我在 64 位 Windows 7 上

编辑:对不起,我忘了提到我已经阅读了另一个有同样问题的问题的答案,但正如我所说,我无法在我的计算机上的任何地方找到该文件,在bin目录或其他地方。此外,将-static-libgccand传递-static-libstdc++给编译器和/或链接器给了我unrecognized option '-static-libstdc++'. 很抱歉没有澄清我已经读过这篇文章。谢谢!

4

2 回答 2

4

我相信这是一个 tdm/gcc 编译器问题,而不是 Microsoft Visual Studio 设置。

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

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

更新:

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

[代码::Blocks“项目构建选项”的屏幕截图]

[GNU gcc 链接选项]

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

于 2012-02-17T14:49:03.123 回答
4

该文件使用 DWARF 信息(新样式,与旧样式 setjump/longjump 或 SJLj 相比)实现异常处理。

因此,只有当您的代码依赖于任何类型的异常时,您才应该需要它。

如果你觉得幸运,你可以从这里获取我自己对该文件的编译。

于 2012-02-17T19:41:47.310 回答