【问题标题】:Program can't find libgcc_s_dw2-1.dll [duplicate]程序找不到 libgcc_s_dw2-1.dll [重复]
【发布时间】:2011-06-26 10:58:49
【问题描述】:

可能重复:
The program can't start because libgcc_s_dw2-1.dll is missing

我正在使用 Code::Blocks 和 MinGW 4.4(我认为)编译器来创建 C++ 项目。如果我从它的目录运行它,而不是从 Code::Blocks 中运行它,我会收到此系统错误。

The program can't start because libgcc_s_dw2-1.dll is missing from your computer.  Try reinstalling the program to fix this problem.

this post hardmath 中表示将-static-libgcc 添加到编译器标志,静态链接到dll。当我尝试这个时,错误仍然发生。我可以通过将 MinGW bin 目录添加到我计算机的 Path 变量中来让它工作,但我计划在互联网上分发我的程序。

此问题仅在更新到最新的 G++ 编译器后出现。除了我之外,这个解决方案对其他所有人都有效的原因是什么?

【问题讨论】:

  • 如果程序是 C++,则错误消息可能表明您使用了 C++ 标准库中的某些内容。建议的另一个链接器选项是-static-libstdc++。检查您是否也添加了该选项。
  • @hardmath:我用过 。我认为这是来自 C++ 标准库。我在尝试时使用了-static-libstdc++,但解决方案实际上只是-static,正如@rubenvb 下面所说。感谢您花时间帮助我。
  • 如何在代码块项目中添加链接器选项-static-libgcc

标签: c++ mingw codeblocks static-linking


【解决方案1】:

链接命令行参数-static-libgcc 应该可以工作。您可以尝试的另一个变体是普通的-static

如果您不想担心这一点,并且仍想重新分发您的二进制文件,只需从 MinGW 的 bin 目录中复制相关的 dll 并将其放在您的可执行文件旁边。这是常见的做法,并且如宣传的那样有效。

【讨论】:

  • 使用-static 成功了!非常感谢! :)
  • 请注意,使用 -static 会破坏跨 DLL 边界抛出异常。
  • 另请注意,dw2 构建的 gcc 会出现外部异常问题(请参阅TDM's info page 的解释)
  • @user286101 这是不真实的,请阅读official faq 上的I use a proprietary compiler toolchain without any parts of GCC to compile my program, and link it with libstdc++. 部分
  • 发生在我身上的 libgcc_s_sjlj-1.dll - 也 -static-libgcc -static-libstdc++ 解决了这个问题。
猜你喜欢
  • 2011-06-09
  • 2016-01-13
  • 2013-03-15
  • 2012-12-31
  • 1970-01-01
  • 2012-03-08
  • 2014-04-17
  • 2014-09-24
  • 1970-01-01
相关资源
最近更新 更多