boost :: thread undefined reference

时间:2011-07-01 01:23:55

标签: c++ ubuntu boost-thread

我刚刚安装了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();
}

2 个答案:

答案 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'添加到你的链接器鸡尾酒中。