2011-02-13 77 views
26

Possible Duplicate:
The program can't start because libgcc_s_dw2-1.dll is missing程序无法找到libgcc_s_dw2-1.dll

我使用的代码::块和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变量中来实现它,但我计划通过Internet分发我的程序。

该问题仅在更新到最新的G ++编译器后出现。除了我以外,这个解决方案为其他人工作的原因是什么?

+0

如果程序是C++,那么错误信息可能表明您使用了C++标准库中的某些东西。建议的另一个链接器选项是“-static-libstdC++”。检查你是否已经添加了该选项。 – hardmath 2011-02-13 19:21:43

+0

@hardmath:我用过。我认为这是来自C++标准库。当我尝试时,我正在使用`-static-libstdC++`,但解决方案实际上只是`-static`,如下面的@rubenvb所示。感谢您花时间帮助我。 – 2011-02-13 19:25:28

回答

46

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

如果你不想担心这个问题,并且仍然想要重新分配你的二进制文件,只需从MinGW的bin目录复制相关的dll文件,并将它放在你的可执行文件中。这是常见的做法,并按照广告的方式工作。