尝试构建我在互联网上找到的标准 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 新手,不知道是什么导致了错误。