C++ C++;使用Boost线程的链接器错误

C++ C++;使用Boost线程的链接器错误,c++,boost,boost-thread,C++,Boost,Boost Thread,尝试构建一个标准的Boost::thread示例时,我发现Boost头文件thread_data.hpp抛出了多个错误,我没有直接链接到它,但我认为它是由Boost链接的。(我在实际的程序中也会遇到同样的错误,但我使用示例代码来确保我的代码没有问题。) 以下是我在boost::thread教程中找到的示例代码: #include <iostream> #include <boost/thread.hpp> #include <boost/da

尝试构建一个标准的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;
    }
(请注意,我正在链接boost.thread库。)

以下是引发的第一个错误:

    C:\projects\boost\include\boost-1_53\boost\thread\win32\thread_data.hpp|123|undefined reference to `_imp___ZTVN5boost6detail16thread_data_baseE'|
在代码块中,我被指向头文件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新手,不知道是什么导致了错误。

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

我刚刚用MinGW-32从命令行构建了您的示例,它构建得很好。我使用过:
g++main.cpp-IC:\Dev\lib2\mingw32\boost\boost1530-LC:\Dev\lib2\mingw32\boost\boost1530\lib-o main.exe-lboost\u文件系统-mgw47-mt-d-1\u 53-lboost\u日期-mgw47-mt-d-1\u 53-lboost\u系统-mgw47-mt-d-1\u。您是否尝试过从命令行构建它?另一个问题-您是静态链接还是动态链接?如果您是静态链接,您可能需要
#定义BOOST\u THREAD\u USE\u LIB
使用上面提到的编译器命令从命令行构建它,只会在命令控制台而不是在代码块中产生相同的错误。我的BOOST库可能有问题吗?我自己构建了它们,可能做了一些错误,现在才显示出来。您是否保存了构建Boost时的输出(我通常将其重定向到带有
>Boost\u install.log 2>&1的文件)?如果您这样做了,您可以查看一下,看看在构建过程中是否有任何错误。Boost从来没有遇到过很多问题,但我从构建Qt的经验中知道,构建过程的成功结束并不意味着一切都顺利进行。
    //#if defined BOOST_THREAD_PROVIDES_INTERRUPTIONS
            , interruption_handle(create_anonymous_event(detail::win32::manual_reset_event,detail::win32::event_initially_reset))
            , interruption_enabled(true)