“libgcc_s_sjlj-1.dll”缺失

时间:2015-06-27 17:48:42

标签: c++ linker sfml

我正在尝试运行我的第一个SFML应用程序。 我可以通过代码块环境运行它,但我不能通过资源管理器运行它 - 出现一个错误:“libgcc_s_sjlj-1.dll缺失”。我将这些行添加到我的链接器选项中:

-static
-static-libgcc
-static-libstdc++

但是,在尝试编译之后,我在构建日志中看到错误:

mingw32-g++.exe: error: unrecognized command line option '-static-libstdc++'

我该如何解决? 我的GCC版本是4.7.1 TDM-1

2 个答案:

答案 0 :(得分:1)

GCC 4.7.1是一个相当旧的版本,而-static-libstdc++是一个相当新的选择。我相信 它存在于主要的GNU 4.7.x发行版中,但是there is some corroborating evidence MinGW GCC 4.7.1没有它。

无论如何,您不需要静态链接默认库。您的TDM-GCC安装是32位变体。假设它 位于C:\TDM-GCC-32,然后libgcc_s_sjlj-1.dll位于C:\TDM-GCC-32\bin。检查一下 在那儿。如果没有,您的TDM-GCC安装会中断,您需要修复或重新安装。

否则,要在Windows命令提示符下或从资源管理器中成功运行程序, C:\TDM-GCC-32\bin必须位于您的PATH环境变量中。检查是否:(控制面板 - > 系统和安全 - > 系统 - > 高级系统设置 - > 环境变量 - > PATH)。

如果它存在,那我就难倒了。如果没有,请将;C:\TDM-GCC-32\bin附加到PATH并确定。 正常重建您的程序(没有-static-*选项)然后它将从资源管理器运行,或从您打开的命令提示符运行(禁止任何其他动态链接问题)。

从Code :: Blocks运行程序时,您不会遇到此程序,因为它 自动为PATH添加前缀,并将路径名添加到已配置的二进制文件中 运行程序之前的编译器。

考虑升级到the latest TDM GCC distribution

答案 1 :(得分:0)

(如果您使用的是Windows,特别是7) 您可能需要在开始菜单的搜索栏中检查路径变量,搜索环境,然后单击"编辑系统环境变量"。

在弹出窗口中单击环境变量,转到新弹出窗口的系统变量部分,然后查找路径。点击编辑并将整个内容复制到一个txt(它很长)。

您正在查看的是在尝试查找dll等时首先搜索的一堆不同路径。您将要检查其中一个路径是否指向您不再使用的编译器。然后,您将要检查是否提到了当前的编译器。

如果没有提到您的编译器,请将它的bin文件夹添加到变量中,并确保以分号跟随它。确保不要弄乱任何路径,并保存您最初复制的路径以防万一。将所有这些复制回编辑栏并提交。

e.g。老路是

C:\Windows\System32

所以像这样添加你的编译器;

C:\Windows\System32;C:\mingw64\bin      // bin should contain g++ and such

希望您的程序现在可以编译。几个星期前我遇到了这个问题,这种方法对我有用。如果它没有工作,将路径变量改回原来的状态,我道歉。