Eclipse3.6.1中解决undefined reference to `boost::thread::start_thread()'

使用boost库编写多线程程序:

#define BOOST_DATA_TIME_SOURCE
#define BOOST_THREAD_NO_LIB

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

using namespace std;
using namespace boost;

void hello()
{
std::cout <<
    "Hello world, I'm a thread!"
    << std::endl;
}

int main(int argc, char* argv[])
{
  boost::thread thrd(&hello);
  // 等待线程结束
  thrd.join();
  return 0;
}

编译时控制台提示错误:

**** Internal Builder is used for build               ****
g++ -O0 -g3 -Wall -c -fmessage-length=0 -osrc/test.o ../src/test.cpp
g++ -otest.exe src/test.o
src/test.o: In function `main':
C:/eclipse/workspace/test/Debug/../src/test.cpp:22: undefined reference to `boost::thread::join()'
C:/eclipse/workspace/test/Debug/../src/test.cpp:20: undefined reference to `boost::thread::~thread()'
C:/eclipse/workspace/test/Debug/../src/test.cpp:20: undefined reference to `boost::thread::~thread()'
src/test.o: In function `thread<void (*)()>':
d:/eclipse/mingw/bin/../lib/gcc/i686-pc-mingw32/4.5.2/../../../../include/boost/thread/detail/thread.hpp:204: undefined reference to `boost::thread::start_thread()'
collect2: ld returned 1 exit status
Build error occurred, build is stopped
Time consumed: 6062  ms. 

同时源代码中两行提示错误。

解决办法:

在工程上点击右键->Properties

Eclipse3.6.1中解决undefined reference to `boost::thread::start_thread()'_第1张图片

 

打开如下设置界面:

Eclipse3.6.1中解决undefined reference to `boost::thread::start_thread()'_第2张图片

点开左侧的C/C++ Build,在Tool Settings 下面的列表中找到MinGW C++ Linker -->Libraries,在上面的Libraries中点击右上角的加号图标,添加“ boost_thread ”,如图:

Eclipse3.6.1中解决undefined reference to `boost::thread::start_thread()'_第3张图片

点击“OK”,点击“Apply”,然后再点击“OK”退出。重新编译,没有问题了。

你可能感兴趣的:(Eclipse3.6.1中解决undefined reference to `boost::thread::start_thread()')