我有一个简单的程序,它使用c ++中的boost线程创建并执行为线程。
#include<boost/thread/thread.hpp>
#include<iostream>
void hello()
{
std::cout<<"Hello, i am a thread"<<std::endl;
}
int main()
{
boost::thread th1(&hello);
th1.join();
}
编译器针对th1.join()行抛出错误。它说
“
此行有多个标记
- undefined reference to
`boost::thread::join()'
- undefined reference to
`boost::thread::~thread()'
“
答案 0 :(得分:1)
这肯定是不包括适当的标题/链接库的问题。
1)您应检查包含路径是否包含适当的boost
文件夹和提升标头。
2)您应该使用适当的静态库(xxx.lib
)文件构建应用程序。对于boost :: thread,该文件的名称类似于libboost_thread_xxx.lib
答案 1 :(得分:1)
在Eclipse中,右键单击项目并转到“属性”。
转到C / C ++构建 - &gt;设置 - &gt;工具设置
接下来,打开GCC C ++ Linker下的Libraries部分。
在Libraries(-l)面板中添加值为boost_thread
的条目。
(我假设您使用的是Linux,如果没有查看This question)