C ++程序不在Code :: Blocks中运行

时间:2011-11-03 07:40:16

标签: c++ codeblocks

在Code :: Blocks中进行编程时,它可以很好地编译C,但不适用于C ++。即使是“Hello World”计划:

#include <iostream>

using namespace std;

int main()
{
    cout << "Hello world!" << endl;
    return 0;
}

它给出了这些错误:

-------------- Build: Debug in project ---------------

    Compiling: main.cpp
    Linking console executable: bin\Debug\project.exe
    C:\Program Files (x86)\CodeBlocks\MinGW\lib/libstdc++.a(eh_throw.o):eh_throw.cc:(.text+0x7b): undefined reference to `__w32_sharedptr_unexpected'
    C:\Program Files (x86)\CodeBlocks\MinGW\lib/libstdc++.a(eh_throw.o):eh_throw.cc:(.text+0x8c): undefined reference to `__w32_sharedptr_terminate'
    C:\Program Files (x86)\CodeBlocks\MinGW\lib/libstdc++.a(eh_globals.o):eh_globals.cc:(.text+0x4e): undefined reference to `__w32_sharedptr'
    C:\Program Files (x86)\CodeBlocks\MinGW\lib/libstdc++.a(eh_globals.o):eh_globals.cc:(.text+0xb9): undefined reference to `__w32_sharedptr'
    C:\Program Files (x86)\CodeBlocks\MinGW\lib/libstdc++.a(eh_globals.o):eh_globals.cc:(.text+0x179): undefined reference to `__w32_sharedptr'
    C:\Program Files (x86)\CodeBlocks\MinGW\lib/libstdc++.a(eh_globals.o):eh_globals.cc:(.text+0x186): undefined reference to `__w32_sharedptr'
    C:\Program Files (x86)\CodeBlocks\MinGW\lib/libstdc++.a(eh_globals.o):eh_globals.cc:(.text+0x1e3): undefined reference to `__w32_sharedptr'
    C:\Program Files (x86)\CodeBlocks\MinGW\lib/libstdc++.a(eh_globals.o):eh_globals.cc:(.text+0x1ef): more undefined references to `__w32_sharedptr' follow
    C:\Program Files (x86)\CodeBlocks\MinGW\lib/libstdc++.a(eh_terminate.o):eh_terminate.cc:(.text+0x67): undefined reference to `__w32_sharedptr_terminate'
    C:\Program Files (x86)\CodeBlocks\MinGW\lib/libstdc++.a(eh_terminate.o):eh_terminate.cc:(.text+0x97): undefined reference to `__w32_sharedptr_unexpected'
    C:\Program Files (x86)\CodeBlocks\MinGW\lib/libstdc++.a(eh_terminate.o):eh_terminate.cc:(.text+0xb3): undefined reference to `__w32_sharedptr_terminate'
    C:\Program Files (x86)\CodeBlocks\MinGW\lib/libstdc++.a(eh_terminate.o):eh_terminate.cc:(.text+0xd3): undefined reference to `__w32_sharedptr_unexpected'
    collect2: ld returned 1 exit status
    Process terminated with status 1 (0 minutes, 1 seconds)
    12 errors, 0 warnings

1 个答案:

答案 0 :(得分:4)

您获得的错误表明链接器无法定位__w32_sharedptr,这可能是libstdc ++需要工作的依赖项。

通常,在构建项目时,标准库及其所需的任何依赖项都会自动链接。但是,正如trojanfoe的评论所指出的那样,只有在使用g ++进行编译时才会这样。如果您使用gcc构建C ++代码,那么C ++标准库将不会自动包含,因为gcc驱动程序认为它正在编译C代码。

要验证代码块设置中实际发生了什么,请转到设置 - &gt; 编译器和调试器 - &gt; 全局编译器设置(开启左侧) - &gt;位于工具链可执行文件标签下。你应该看到类似的东西:

enter image description here

如果您的设置看起来正确但仍然拒绝正确构建,请启用完整的编译器日志记录,并查看IDE实际调用的命令。您可以在全局编译器设置 - &gt; 其他设置标签 - &gt;下找到此信息。编译器日志=完整命令行。请注意,您可能需要向右滚动一点才能找到标签。

启用完整日志记录后,再次重建项目并使用所使用的命令更新您的问题。

这与您在重新启动上述选项后在日志窗口中看到的内容大致相同:

enter image description here