VC ++ 2008用boost编译问题

时间:2011-01-22 11:20:57

标签: c++ visual-studio-2008 boost compiler-errors

突然间,两个项目解决方案开始无法编译。我不记得做出任何可能影响构建的更改。一个项目是lib,另一个是exe。 lib仍在编译时没有问题,但是exe失败了。我在加载一些boost文件时解决了这个问题。这是一个足以显示错误的stdafx.cpp:

#include "stdafx.h"
#include <boost/thread.hpp>

这些是报告的错误:

1>Compiling...
1>stdafx.cpp
1>        c:\program files (x86)\microsoft visual studio 9.0\vc\include\stdlib.h(525) : see declaration of '_ultoa'
1>c:\libs\boost_1_44_0\boost\mpl\size_t_fwd.hpp(23) : error C2143: syntax error : missing ',' before 'constant'
1>c:\libs\boost_1_44_0\boost\mpl\aux_\integral_wrapper.hpp(42) : error C2143: syntax error : missing ',' before 'constant'
1>c:\libs\boost_1_44_0\boost\mpl\aux_\integral_wrapper.hpp(84) : error C2143: syntax error : missing ',' before 'constant'
1>c:\libs\boost_1_44_0\boost\mpl\aux_\integral_wrapper.hpp(84) : error C3211: 'boost::mpl::size_t<__formal>::value' : explicit specialization is using partial specialization syntax, use template <> instead
1>        with
1>        [
1>            __formal=1135
1>        ]
1>        c:\libs\boost_1_44_0\boost\mpl\aux_\integral_wrapper.hpp(45) : see declaration of 'boost::mpl::size_t<__formal>::value'
1>        with
1>        [
1>            __formal=1135
1>        ]

我注意到如果我将include行更改为:

#include "stdafx.h"
#include <boost/thread/thread.hpp>

它有效,但我在代码中有其他包含:

#include <boost/bind.hpp>
#include <boost/function.hpp>

并且他们也提供相同的4个错误行。

任何人都知道可能出现什么问题?我重申,这段代码已经工作了好几个月,错误最初是在昨天发生的。

1 个答案:

答案 0 :(得分:1)

很难猜到,但我认为stdafx.h中可能存在一些与Boost发生冲突的宏(即Boost使用变量/函数/模板/与宏同名的任何东西)。请记住,宏跨越范围。快速检查 - 如果更改包含的顺序,问题是否会消失?