使用Boost Thread的C ++链接器错误

时间:2013-04-14 12:19:20

标签: c++ boost boost-thread

尝试构建我在互联网上找到的标准Boost :: thread示例,我得到了Boost头文件thread_data.hpp引发的多个错误,我没有直接链接到这个错误,但我认为它是由Boost链接的。 (我在实际程序中也遇到了同样的错误,但我使用的是示例代码,以确保我的代码不会出现问题。)

以下是我在boost :: thread教程中找到的示例代码:

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

    void workerFunc()
    {
        boost::posix_time::seconds workTime(3);
        std::cout << "Worker: running" << std::endl;

        // Pretend to do something useful...
        boost::this_thread::sleep(workTime);
        std::cout << "Worker: finished" << std::endl;
    }

    int main(int argc, char* argv[])
    {
        std::cout << "main: startup" << std::endl;
        boost::thread workerThread(workerFunc);
        std::cout << "main: waiting for thread" << std::endl;
        workerThread.join();
        std::cout << "main: done" << std::endl;
        return 0;
    }

这是我的构建命令:

    mingw32-g++.exe -LC:\projects\boost\lib  -o bin\Debug\Guardian.exe obj\Debug\Scratch.o    -lboost_filesystem-mgw47-mt-1_53 -lboost_date_time-mgw47-mt-1_53 -lboost_system-mgw47-mt-1_53 -lboost_thread-mgw47-mt-1_53

(请注意,我链接 boost.thread 库。)

这是抛出的第一个错误:

    C:\projects\boost\include\boost-1_53\boost\thread\win32\thread_data.hpp|123|undefined reference to `_imp___ZTVN5boost6detail16thread_data_baseE'|

在CodeBlocks中,我指向头文件thread_data.hpp的第123行作为错误的来源:

    //#if defined BOOST_THREAD_PROVIDES_INTERRUPTIONS
            , interruption_handle(create_anonymous_event(detail::win32::manual_reset_event,detail::win32::event_initially_reset))
            , interruption_enabled(true)

我忘记链接图书馆吗?我一直在使用Boost没有问题,直到现在我正在尝试使用线程库。我是Boost的新手,不知道可能导致错误的原因。

1 个答案:

答案 0 :(得分:0)

尝试将-lpthread添加到链接器。