【问题标题】:"libgcc_s_sjlj-1.dll" is missing“libgcc_s_sjlj-1.dll”丢失
【发布时间】:2015-06-27 17:48:41
【问题描述】:

我正在尝试运行我的第一个 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

【问题讨论】:

    标签: c++ linker sfml


    【解决方案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-* 选项),然后它将从资源管理器或您打开的 new 命令提示符运行(除非有任何其他动态链接问题)。

    从 Code::Blocks 运行程序时不会遇到此程序,因为它 自动在 PATH 前面加上配置的二进制文件的路径名 在运行程序之前编译。

    考虑升级到the latest TDM GCC distribution

    【讨论】:

      【解决方案2】:

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

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

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

      如果未提及您的编译器,请将其 bin 文件夹添加到变量中,并确保在其后面加上分号。确保不要弄乱任何路径,并保存您首先复制的路径以防万一。将所有这些复制回编辑栏并提交。

      例如旧路径是

      C:\Windows\System32
      

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

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

      希望您的程序现在可以编译。几周前我遇到了这个问题,这种方法对我有用。如果它不起作用,请将路径变量改回原来的样子,我很抱歉。

      【讨论】:

      • 它仍然没有编译:(
      • 我知道的另一个选项是找到相关文件(如果它位于计算机上的任何位置,它将位于编译器的 bin 文件夹中)并将其复制到您的项目文件夹中,然后使用 -静止的。您可能可以在网上找到相关文件,但我不推荐它。
      猜你喜欢
      • 2012-10-06
      • 1970-01-01
      • 1970-01-01
      • 2017-11-09
      • 2012-12-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-23
      相关资源
      最近更新 更多