2013-12-16 75 views
1

我開始學習C++,我試着運行經典的Hello World程序:錯誤在C++的世界您好

#include <iostream> 

using namespace std; 

int main() 
{ 
    cout << "Hello, World!"; 
    return 0; 
} 

但是當我用GCC編譯在終端,我總是得到這個錯誤:

Undefined symbols for architecture x86_64: 
    "std::basic_string<char, std::char_traits<char>, std::allocator<char> >::size() const", referenced from: 
     std::__verify_grouping(char const*, unsigned long, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)in ccpe3DPY.o 
    "std::basic_string<char, std::char_traits<char>, std::allocator<char> >::operator[](unsigned long) const", referenced from: 
     std::__verify_grouping(char const*, unsigned long, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)in ccpe3DPY.o 
    "std::cout", referenced from: 
     _main in ccpe3DPY.o 
    "std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)", referenced from: 
     _main in ccpe3DPY.o 
    "std::ios_base::Init::Init()", referenced from: 
     __static_initialization_and_destruction_0(int, int)in ccpe3DPY.o 
    "std::ios_base::Init::~Init()", referenced from: 
     ___tcf_0 in ccpe3DPY.o 
    "___gxx_personality_v0", referenced from: 
     Dwarf Exception Unwind Info (__eh_frame) in ccpe3DPY.o 
ld: symbol(s) not found for architecture x86_64 
collect2: ld returned 1 exit status 

你能告訴我爲什麼嗎?

+5

用'g ++'編譯將自動鏈接到stdlib中。 –

+0

您發佈的代碼不會產生該錯誤:http://ideone.com/qkh6z7 – Johnsyweb

回答

11

你已經用gcc編譯了你的程序,它是一個C編譯器,而不是C++編譯器。改爲使用g++;它知道包含C++運行時庫,其中定義了那些缺失的符號。

+1

好的謝謝,併爲noob問題抱歉:) – PazEr80

3

這是一個C編譯器,你需要使用C++編譯器,比如rob,上面說的是g ++。另外,如果你是初學者,如果你運行Windows操作系統,我強烈建議使用Microsoft Visual Studio Express;如果不是那麼netbeans。