突然间,两个项目解决方案开始无法编译。我不记得做出任何可能影响构建的更改。一个项目是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个错误行。
任何人都知道可能出现什么问题?我重申,这段代码已经工作了好几个月,错误最初是在昨天发生的。
答案 0 :(得分:1)
很难猜到,但我认为stdafx.h中可能存在一些与Boost发生冲突的宏(即Boost使用变量/函数/模板/与宏同名的任何东西)。请记住,宏跨越范围。快速检查 - 如果更改包含的顺序,问题是否会消失?