我刚刚安装了boost库,我正在尝试使用多线程。我完全从boost库示例复制了这个例子。我收到了错误:
undefined reference boost::thread::join()
这是代码,
#include <boost/thread.hpp>
#include <boost/thread/xtime.hpp>
#include <iostream>
struct thread_alarm
{
thread_alarm(int secs) : m_secs(secs) { }
void operator()()
{
boost::xtime xt;
boost::xtime_get(&xt, boost::TIME_UTC);
xt.sec += m_secs;
boost::thread::sleep(xt);
std::cout << "alarm sounded..." << std::endl;
}
int m_secs;
};
int main(int argc, char* argv[])
{
int secs = 5;
std::cout << "setting alarm for 5 seconds..." << std::endl;
thread_alarm alarm(secs);
boost::thread thrd(alarm);
thrd.join();
}
答案 0 :(得分:2)
哪个编译器?
尝试这个,如果它是gcc
$ g++ -o ./app.out ./source.cpp -lboost_thread
如果您在Windows上运行,也许您必须确保已安装的pthread,并且还必须告诉编译器将它们链接在一起的位置和方式,应用程序和第三方库,例如{{ 1}}。
希望这对你有用
答案 1 :(得分:1)
在我的Fedora Core 16下,链接所需的升级lib是'boost_thread-mt'(将'-lboost_thread-mt'添加到你的链接器鸡尾酒中。