2012-03-25 21 views
1

ただベクトルを作成しようとしていますが、それは私に大きなエラーをもたらし、私の他のプロジェクトの実際の例に従っています。コード:ベクトルを初期化するときに厄介なエラーが発生する

#include <stdio.h> 
#include <stdlib.h> 
#include <vector> 
using namespace std; 

struct organism { 
    bool One; 
    bool Two; 
}; 
std::vector<organism> organisms; 

int main() { 
    printf("Content-type: text/html\n\n"); 
    printf("TEST"); 
    printf(getenv("QUERY_STRING")); 

    return 0; 
} 

エラー:

> "make" 
C:/MinGW/bin/gcc.exe -o build/e2.exe source/main.cpp 
C:\Users\Stephen\AppData\Local\Temp\ccc0a0w2.o:main.cpp:(.text$_ZN9__gnu_cxx13new_allocatorI8organismE10deallocateEPS1_j[__gnu_cxx::new_allocator<organism>::deallocate(organism*, unsigned int)]+0xd): undefined reference to `operator delete(void*)' 
C:\Users\Stephen\AppData\Local\Temp\ccc0a0w2.o:main.cpp:(.eh_frame$_ZNSt12_Vector_baseI8organismSaIS0_EED2Ev+0x13): undefined reference to `__gxx_personality_v0' 
C:\Users\Stephen\AppData\Local\Temp\ccc0a0w2.o:main.cpp:(.eh_frame$_ZNSt6vectorI8organismSaIS0_EED1Ev+0x13): undefined reference to `__gxx_personality_v0' 
collect2: ld returned 1 exit status 
"make": *** [build] Error 1 

> Process Exit Code: 2 
> Time Taken: 00:01 

私はstd::vector<organism> organisms;をコメントアウト場合、私はそれをコンパイルすることができますが、私はそのラインと間違って何見当もつかない。私の他のプロジェクトでも同じですが、これはうまくコンパイルされます。

答えて

8

gcc.exeの代わりにg++.exeをコンパイルして、C++ライブラリにリンクする必要があることがわかります。

+0

Damnit。 g ++ではなくgccでコンパイルすることで別の問題を修正しました。すなわち、g ++はCGI/Apacheでは動作しません。 –

+2

おそらくあなたは別の質問としてその問題について尋ねるべきです。 :) –

+0

'gcc'でコンパイルすることもできますが、' gcc -o build/e2.exe source/main.cpp -lstdC++ 'に' -lstdC++ 'をオプションとして渡すことができます。 –

関連する問題