【问题标题】:problems with running c++-programs运行 c++ 程序的问题
【发布时间】:2016-07-03 02:48:34
【问题描述】:

我编写了一个包含<iostream> 的c++ 程序来使用std::cout 和std::cin。我使用 MinGW 在 Windows 10 上使用 g++ 编译器(GNU 编译器集合)编译它。当我使用 MinGW 的运行终端运行程序时,它可以工作,但是当我尝试使用 cmd.exe 运行它或在 Windows 资源管理器中打开它时,我收到此错误:

“由于缺少libstdc++-6.dll,程序无法运行。请重新安装程序解决问题。”

因为我没有安装我的程序,所以我尝试安装 libstdc++-6.dll。我下载了 zip 格式的文件,但我不知道在哪里解压。这个文件是否在 system32 中?我还有其他问题吗?谁能帮我解决它?我已经阅读了一个类似的问题及其答案,但 -static-libgcc -static-libstdc++ 不起作用。

【问题讨论】:

  • 您可能遇到了路径问题。您能否向我们发布您在 MinGW 运行终端中输入:echo $PATH 时得到的结果以及在 cmd.exe 中输入:echo %PATH% 时得到的结果?
  • libstdc++-6.dll not found的可能重复
  • 在 MinGW 中我得到 $PATH 的结果,在 cmd.exe 中我得到结果“命令 C:\Python27\ 写入错误或找不到。”我还开发了 Python 程序来解释这一点。
  • @david 是的,是路径问题。在 MinGW 路径(g++.exe 所在的位置)中有一些 dll 文件。我只需要复制其中三个(libstdc++-6.dll、libgcc.dll 和 libwinp-thread.dll)并将它们插入到我的 C++ 程序所在的文件夹中。现在他们跑了,谢谢。

标签: c++ dll


【解决方案1】:

您可能希望使用g++ 和选项-static-libgcc-static-libstdc++ 编译您的代码,以便静态链接C 和C++ 标准库。因此,您不必在 Windows 路径中安装库,并且可以在其他系统上携带可执行文件。

【讨论】:

  • 我读到了类似问题的答案,但是当我尝试使用此选项进行编译时,它仍然无法正常工作
  • 您能否通过strings MY.EXE | grep -i \.dll$DependencyWalker 确认该库未显示为动态链接? ---------- ETA:试试这个,可能更可靠github.com/gsauthof/pe-util
  • 找不到命令 grep 和 DependencyWalker。我误会你了吗?命令字符串工作并在 cmd 中打印一个很长的 sth(模块名称?)列表。
  • DependencyWalker 是第三方应用程序 dependencywalker.com 。或者您可以在字符串的输出中搜索 *.dll 文件。
【解决方案2】:

这是@kerrek-sb 重复这个问题libstdc++-6.dll not found 做这个

如果您在 Windows 上使用 MingW 编译 C++ 代码,您可能希望添加选项 -static-libgcc 和 -static-libstdc++ 以静态链接 C 和 C++ 标准库,从而无需携带任何单独的那些的副本。库的版本管理在 Windows 中是一个难题,因此我发现这种方法是创建 Windows 二进制文件的最快和最干净的解决方案。

【讨论】:

  • 我已经阅读了这个问题和答案,但是使用 -static 选项链接库不起作用:(
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-24
  • 2011-03-26
  • 1970-01-01
  • 2020-09-05
  • 1970-01-01
相关资源
最近更新 更多