“libstdc ++ - 6!_ZNSo9_M_insertIlEERSoT_()at 0x6fc868a8”没有可用的源“

时间:2012-06-22 16:18:50

标签: c++ eclipse mingw libstdc++

我在Windows 7 Starter 32bit下使用MinGW(最初安装了mingw-get-inst-20120426.exe)和Eclipse for C / C ++(Indigo SR2),我刚刚升级到gcc / g ++ 4.7 .0:

mingw-get update
mingw-get upgrade

我修复了Eclipse保留旧版本引用(https://bugs.eclipse.org/bugs/show_bug.cgi?id=206372#c2

的问题

但是当我尝试运行一个像这个一样简单的程序时,它会崩溃:

#include <iostream>
#include <cstdlib>
using namespace std;
int main (int argc, char* argv[])
{
    cout << "one = " << 1 << "\n";
    return EXIT_SUCCESS;
}

当我尝试调试时,问题似乎来自cout行:

cout << "one = " << 1 << "\n";

如果我跨过它,Eclipse就会发出错误信号:

No source available for "libstdc++-6!_ZNSo9_M_insertIlEERSoT_() at 0x6fc868a8" 

以下是点击“Step Over”行后的IDE的屏幕截图:http://i.stack.imgur.com/QexxQ.png

同样的程序之前工作正常,但现在却没有。

我甚至创建了一个新项目(我没有触及编译器/链接器选项中的任何内容),但仍然存在同样的问题。

有人有解决方案吗?

提前感谢您的帮助:)

2 个答案:

答案 0 :(得分:4)

发现它! :d

如Dennis所述,似乎运行时dll与链接时使用的运行符不同。

实际上,Eclipse链接了 C:\ mingw \ bin \ libstdc ++ - 6.dll ,但在执行时,又使用了另一个(即 C:\ Program Files \ gnuplot \ bin \ libstdc ++ - 6.dll &gt; _&lt;)因为gnuplot(我很久以前安装了,顺便说一下好的软件;))将其安装目录添加到 PATH < / strong>(即使C:\ mingw \ bin也在PATH中)(它还添加了一些其他环境变量)

我很生气,我删除了与gnuplot lol相关的所有内容(即它从PATH的路径,它的环境变量和我卸载的程序)。我也删除了Cygwin(即使它不在PATH中,但我已经很久没有使用它了,所以...)

然后,我升级到4.7

mingw-get update
mingw-get upgrade

我也做了Eclipse的事情

现在一切都很好:

one = 1

:)

C:\Windows\System32>gcc --version
gcc (GCC) 4.7.0
Copyright (C) 2012 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.


C:\Windows\System32>g++ --version
g++ (GCC) 4.7.0
Copyright (C) 2012 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

如果有帮助,我使用Dependency Walker来确定可执行文件使用了什么运行时dll(只需在Dependency Walker中加载exe,然后右键单击LIBSTDC ++ - 6.DLL&gt;属性)

答案 1 :(得分:0)

嗯,我知道这个问题得到了很好的回答,但我只是想分享一下我的经验,因为我很长一段时间都被它弄糊涂了(是的,我已经很长时间没用C ++进行编码了)

我意识到发生这种情况是因为我在安装JAVA eclipse时安装MinGW 4.8.1并删除了旧版本(可能是4.6.2我不记得了),并且dll无处可寻。

我没有更改Path中的任何内容。我所做的只是重新安装MinGW,单击并单击,并更新它提供的所有lib文件,然后cin&amp;工作。 好吧,我真的不知道为什么和wth正在进行,但是现在它可以工作了。