2012-03-18 109 views
0

我是boost庫的新手。如果答案很明顯,請原諒我。這是我的代碼。如何使用Boost創建線程

#include <iostream> 
#include <boost/thread.hpp> 

using namespace std; 

void task1(void) 
{ 
    cout << "There" << endl; 
} 

int main() 
{ 
boost::thread mythread(task1); 
cout << "Hi" << endl; 
} 

當我嘗試建立我收到以下:

/mythread1.cpp:13: undefined reference to `boost::thread::~thread()' 

它編譯,如果我只是宣佈線程,提高::線程MyThread的();

有什麼建議嗎?我只需要知道聲明和啓動這個線程來完成task1()的語法。

請不要回復主題。我的問題很簡單。謝謝你的幫助。順便說一句,我使用Eclipse和Boost 1.42。

+2

你的程序編譯得很好,它的鏈接失敗了。 boost線程庫不是頭文件,只是像大多數boost一樣,但是需要構建一個庫。你有沒有編譯它,或者你有一個預編譯版本,並且你鏈接到它是否正確? – Rolle 2012-03-18 23:47:25

+0

首先,你使用什麼命令來編譯和鏈接這個程序?其次,你需要修復你的程序,以便它在完成工作之前不會終止。 (當你從'main'返回時,這隱含地終止你的過程。) – 2012-03-19 00:01:42

+0

感謝Rolle,David。不,我沒有建立它。你能指點我一個教程嗎?我正在使用Eclipse,並且已經安裝了Synaptic的增強功能。從我在Eclipse中的項目中,我可以看到包含所有boost文件的include路徑,但不知道如何鏈接或構建或使其可用於我的項目。 – user1277564 2012-03-19 00:56:19

回答

0

使用Boost線程需要鏈接boost線程庫。 在你的代碼中,你錯過了加入(參見線程文檔)

+0

爲什麼你不鏈接我們的線程文檔? – ForceMagic 2012-10-22 02:16:01