没有可用于"libstdc++-6!_ZNSo9_M_insertIlEERSoT_() at 0x6fc868a8"的来源

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

本文关键字:at 0x6fc868a8 insertIlEERSoT ZNSo9 用于 libstdc++-6      更新时间:2023-10-16

我正在使用MinGW(最初与mingw-get-inst-20120426.exe一起安装)与Windows 7 Starter 32位下的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" 

下面是单击"单步跳过"该行后 IDE 的屏幕截图:https://i.stack.imgur.com/QexxQ.png

同样的程序以前工作正常,但现在不行了。

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

请问有人有解决方案吗?

提前感谢您的帮助:)

找到了! :D

正如 Dennis 所提到的,运行时 dll 似乎与链接时使用的运行时 dll 不同。

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

我很生气,我删除了与 gnuplot 相关的所有内容,哈哈(即它从 PATH 的路径、它的环境变量,我卸载了该程序)。我还删除了Cygwin(即使它不在PATH中,但是我已经很长时间没有使用它了,所以......

然后,我升级到4.7

mingw-get update
mingw-get upgrade

我也做了Eclipse的事情

现在一切都很好:

one = 1

:)

C:WindowsSystem32>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:WindowsSystem32>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>属性)

好吧,我知道这个问题得到了很好的回答,但我只想分享我的经验,因为我对它感到困惑了很长时间(是的,我已经很长时间没有用C++编码了,哈哈)

我意识到这是因为我在安装 JAVA eclipse 并删除旧版本(也许 4.6.2 我记不清楚)时安装了 MinGW 4.8.1,而 dll 无处可寻。

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