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

C++ linker error using Boost Thread

本文关键字:链接 错误 c++ Boost 线程 使用      更新时间:2023-10-16

试图构建一个标准的Boost::线程示例,我在互联网上找到,我得到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:projectsboostlib  -o binDebugGuardian.exe objDebugScratch.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

(注意I am连接了boost。线程图书馆。)

下面是抛出的第一个错误:
    C:projectsboostincludeboost-1_53boostthreadwin32thread_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的新手,不知道是什么导致了这个错误。

尝试添加-lpthread到链接器