繁体   English   中英

VC ++ 2008用boost编译问题

[英]VC++ 2008 compiling problem with boost

突然间,两个项目解决方案开始无法编译。 我不记得做出任何可能影响构建的更改。 一个项目是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个错误行。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM