我正在尝试运行我的第一个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
答案 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
添加前缀,并将路径名添加到已配置的二进制文件中
运行程序之前的编译器。
答案 1 :(得分:0)
(如果您使用的是Windows,特别是7) 您可能需要在开始菜单的搜索栏中检查路径变量,搜索环境,然后单击"编辑系统环境变量"。
在弹出窗口中单击环境变量,转到新弹出窗口的系统变量部分,然后查找路径。点击编辑并将整个内容复制到一个txt(它很长)。
您正在查看的是在尝试查找dll等时首先搜索的一堆不同路径。您将要检查其中一个路径是否指向您不再使用的编译器。然后,您将要检查是否提到了当前的编译器。
如果没有提到您的编译器,请将它的bin文件夹添加到变量中,并确保以分号跟随它。确保不要弄乱任何路径,并保存您最初复制的路径以防万一。将所有这些复制回编辑栏并提交。
e.g。老路是
C:\Windows\System32
所以像这样添加你的编译器;
C:\Windows\System32;C:\mingw64\bin // bin should contain g++ and such
希望您的程序现在可以编译。几个星期前我遇到了这个问题,这种方法对我有用。如果它没有工作,将路径变量改回原来的状态,我道歉。