2012-03-18 46 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