2012-08-25 114 views
1

我最近在我的Windows 32机器上安装了MinGW和MSYS,它似乎运行良好。C++ mingw STL安装

在C++编译器中,我包含了一个向量容器,并且没有发现任何错误。但是当我尝试使用它时,我会遇到编译时错误。

所以,代码

#include <vector> // include vector.h 
#include <stdio.h> // include stdio.h 

using namespace std; 

main() { 

// vector<int> A; 

printf("\nHeya .."); 

} 

运行就好了。然而,那一刻我取消注释行8--矢量报关行,我得到在编译时出现以下错误(缩短):

undefined reference to 'operator delete(void*)' 
undefined reference to '__gxx_personality_v0' 
+0

你不是偶然用gcc而不是g ++编译的,对吗? –

+0

尝试gcc -std = C++ 0x program.cpp – perilbrain

回答

8

你可能有gcc而不是g++编译。实际的编译器是相同的,但g++告诉链接器使用默认的C++库,gcc只告诉它看看C库。只要您使用标准库的C++特定部分,gcc就会失败。另外,C++不支持旧C的default int规则,因此您应该从main真正指定返回类型。

+0

谢谢,g ++的作品! 在这些水域里游泳 - minGW – ashley

0

我不明白你是如何编译你的代码的。你的主要方法是无效的,不正确的签名,你没有返回任何东西。

应该是这样的:

#include <vector> // include vector.h 
#include <stdio.h> // include stdio.h 

using namespace std; 

int main(int, char**) { 

// vector<int> A; 

printf("\nHeya .."); 
return 0; 
} 

你也需要用g ++以及不GCC编译器这一点。

+0

而且你也是... – perilbrain

+0

@匿名它怎么会是错的? – anio

+0

需要为main修正的唯一事情是添加'int'返回类型。参数和实际返回声明不是必需的,但也不是错的。 –