2009-12-12 133 views
2

我使用Ubuntu + Eclipse並安裝了boost(不確定是否正確)。我安裝Boost使用apt-get安裝libboost *使用Eclipse編譯boost :: thread

我測試了一些簡單的代碼,它似乎是提升工作的權利。

但是,當我嘗試學習線程部分時,下面的代碼不起作用。

#include <boost/thread/thread.hpp> 
#include <iostream> 
using namespace std; 

void hello() 
{ 
    cout<<"hello!"<<endl; 
} 

int main() 
{ 
    boost::thread thrd(&hello); 
    cout<<"Just a test!"<<endl; 
} 

錯誤信息如下,有4個錯誤。

Severity and Description Path Resource Location Creation Time Id 
/usr/local/include/boost/thread/detail/thread.hpp undefined reference to `boost::detail::thread_data_base::~thread_data_base()' FirstCppProject line 40 1260656497961 200 


Severity and Description Path Resource Location Creation Time Id 
/usr/local/include/boost/thread/detail/thread.hpp undefined reference to `boost::thread::start_thread()' FirstCppProject line 191 1260656497967 202 


Severity and Description Path Resource Location Creation Time Id 
/usr/local/include/boost/thread/pthread/thread_data.hpp undefined reference to `vtable for boost::detail::thread_data_base' FirstCppProject line 65 1260656497965 201 


Severity and Description Path Resource Location Creation Time Id 
undefined reference to `boost::thread::~thread()' FirstCppProject test.cpp line 15 1260656497959 199 

請原諒我,如果我的問題太幼稚了。請提供您認爲可能幫助我的任何信息。

回答

4

,你必須對線程庫libboost_thread _...

+0

感謝您的快速評論。這是Eclipse的問題嗎?那麼如何在Eclipse中做到這一點?我想當我在Ubuntu上安裝boost時,我不需要任何Eclipse。 – skydoor 2009-12-12 22:42:06

+0

不,這不是一個日食問題,你必須指定一個鏈接器選項(檢查項目選項),像-lboost_thread-gcc-4.3或類似的東西,你必須首先找到庫來找出它的名字,你很可能必須鏈接到pthread。 – user229321 2009-12-12 23:02:16

+0

您將不得不鏈接到pthread。我不得不這樣做。 – KitsuneYMG 2009-12-13 06:03:39

1

有了提升鏈接有時你只需要告訴你的鏈接,並在庫就會找出哪一個來鏈接。

+1

自動鏈接在g ++中不起作用,它是一個visual C++特性,所以它在* nix下不可用 – user229321 2009-12-12 23:45:43

1

要添加接頭 - > 1.右鍵上的C/C++的屬性窗口 3.click項目 2.select單擊建立 4.選擇設置 5.並選擇庫 6。那麼你可以添加連接器:boost_thread和boost_system等