在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
答案 0 :(得分:4)
您获得的错误表明链接器无法定位__w32_sharedptr
,这可能是libstdc ++需要工作的依赖项。
通常,在构建项目时,标准库及其所需的任何依赖项都会自动链接。但是,正如trojanfoe的评论所指出的那样,只有在使用g ++进行编译时才会这样。如果您使用gcc构建C ++代码,那么C ++标准库将不会自动包含,因为gcc驱动程序认为它正在编译C代码。
要验证代码块设置中实际发生了什么,请转到设置 - &gt; 编译器和调试器 - &gt; 全局编译器设置(开启左侧) - &gt;位于工具链可执行文件标签下。你应该看到类似的东西:
如果您的设置看起来正确但仍然拒绝正确构建,请启用完整的编译器日志记录,并查看IDE实际调用的命令。您可以在全局编译器设置 - &gt; 其他设置标签 - &gt;下找到此信息。编译器日志=完整命令行。请注意,您可能需要向右滚动一点才能找到标签。
启用完整日志记录后,再次重建项目并使用所使用的命令更新您的问题。
这与您在重新启动上述选项后在日志窗口中看到的内容大致相同: