C++ 包含Boost线程库时出错

C++ 包含Boost线程库时出错,c++,multithreading,boost,compiler-errors,C++,Multithreading,Boost,Compiler Errors,我有一个相当大的代码库,包括libSVM和lp_solve库。我最近在代码中添加了Boost线程库,但我仍然遇到一个编译错误,我似乎无法解决这个问题 首先,我为线程库添加了include语句: #include <boost/thread.hpp> 生成的错误是: In file included from /usr/local/include/boost/thread.hpp:24, from ../Samplers/OMPP_Sampler.cpp:1

我有一个相当大的代码库,包括libSVM和lp_solve库。我最近在代码中添加了Boost线程库,但我仍然遇到一个编译错误,我似乎无法解决这个问题

首先,我为线程库添加了include语句:

#include <boost/thread.hpp>
生成的错误是:

In file included from /usr/local/include/boost/thread.hpp:24,
             from ../Samplers/OMPP_Sampler.cpp:15:
/usr/local/include/boost/thread/future.hpp: In constructor 
‘boost::packaged_task<R>::packaged_task(R (*)())’:
/usr/local/include/boost/thread/future.hpp:3214: error: expected 
unqualified-id before numeric constant
/usr/local/include/boost/thread/future.hpp:3214: error: expected ‘)’ 
before numeric constant
/usr/local/include/boost/thread/future.hpp:3215: error: type/value 
mismatch at argument 1 in template parameter list for ‘template<class 
F, class R> struct boost::detail::task_shared_state’
/usr/local/include/boost/thread/future.hpp:3215: error:   expected a 
type, got ‘0’
/usr/local/include/boost/thread/future.hpp:3215: error: invalid type 
in declaration before ‘;’ token
在/usr/local/include/boost/thread.hpp:24中包含的文件中,
来自../Samplers/OMPP_Sampler.cpp:15:
/usr/local/include/boost/thread/future.hpp:在构造函数中
'boost::packaged_task::packaged_task(R(*)()))':
/usr/local/include/boost/thread/future.hpp:3214:错误:预期
数值常量前的非限定id
/usr/local/include/boost/thread/future.hpp:3214:错误:预期为“')”
前数值常数
/usr/local/include/boost/thread/future.hpp:3215:错误:类型/值
“template struct boost::detail::task_shared_state”的模板参数列表中的参数1不匹配
/usr/local/include/boost/thread/future.hpp:3215:错误:预期为a
类型,已获取“0”
/usr/local/include/boost/thread/future.hpp:3215:错误:类型无效
在“;”之前的声明中代币
我已经翻阅了Boost头文件,试图从我自己的代码中识别任何重新定义,等等。导致问题的Boost代码如下:

explicit packaged_task(R(*f)())  
{
    typedef R(*FR)();
    typedef detail::task_shared_state<FR,R> task_shared_state_type;
    task= task_ptr(new task_shared_state_type(f));
    future_obtained=false;
}
显式打包_任务(R(*f)()
{
类型定义R(*FR)();
typedef detail::task_shared_state task_shared_state_type;
任务=任务\u ptr(新任务\u共享\u状态\u类型(f));
获得的未来值=假;
}

关于如何解决这个问题的想法?

您能为那些手头没有库的人提供几行相关的代码吗?也许我们可以发现一些东西。你的意思是你只包含了
boost/thread.hpp
,但不使用其中的任何内容?然后,您可能会定义一个宏,它会弄乱boost头。可能类似于
#define t0
谢谢。经过大量挖掘,实际问题似乎是使用lpsolve库中的#define定义FR(与Boost中的typedef相比),这对Boost库中的代码有影响。我正在努力寻找解决办法。一旦我这样做了,我会张贴。任何其他想法都非常感谢。@NeilKirk我绝对没有使用任何Boost代码。我刚刚包括了头文件。
explicit packaged_task(R(*f)())  
{
    typedef R(*FR)();
    typedef detail::task_shared_state<FR,R> task_shared_state_type;
    task= task_ptr(new task_shared_state_type(f));
    future_obtained=false;
}