环境是VS2008+windowsXPsp3+boost1.39,WTL向导生成的基本模态对话框的工程,只要一include<boost/thread.hpp>,生成Release版本时就会提示一百多个错误:
1>D:\Project\Boost\boost/function/function_template.hpp(80) : error C2143: 语法错误 : 缺少“;”(在“namespace”的前面)
1>D:\Project\Boost\boost/function/function_template.hpp(980) : error C2838: “()”: 成员声明中的非法限定名
1>        D:\Project\Boost\boost/function/function_template.hpp(80): 参见对正在编译的类 模板 实例化“boost::function0<R>”的引用
1>D:\Project\Boost\boost/function/function_template.hpp(995) : error C2804: 二进制“operator ==”的参数太多
1>D:\Project\Boost\boost/function/function_template.hpp(1002) : error C2804: 二进制“operator !=”的参数太多
1>D:\Project\Boost\boost/function/function_template.hpp(1098) : error C2764: “R”: 部分专用化“boost::function<R(void)>”中未使用或不能推导出的模板参数
1>D:\Project\Boost\boost/function/function_template.hpp(1098) : error C3412: “boost::function<R(void)>”: 不能在当前范围内专用化模板
1>D:\Project\Boost\boost/function/function_template.hpp(90) : error C2061: 语法错误 : 标识符“function_buffer”
1>        D:\Project\Boost\boost/function/function_template.hpp(96): 参见对正在编译的类 模板 实例化“boost::boost::detail::function::function_invoker1<FunctionPtr,R,T0>”的引用
1>D:\Project\Boost\boost/function/function_template.hpp(106) : error C2061: 语法错误 : 标识符“function_buffer”
1>        D:\Project\Boost\boost/function/function_template.hpp(113): 参见对正在编译的类 模板 实例化“boost::boost::detail::function::void_function_invoker1<FunctionPtr,R,T0>”的引用
1>D:\Project\Boost\boost/function/function_template.hpp(122) : error C2061: 语法错误 : 标识符“function_buffer”




我想应该是环境的问题,请问有谁遇到过并解决吗?

解决方案 »

  1.   

    楼主看下debug和release两种情况工程配置是否有什么不同吧,
      

  2.   

    boost的所有include目录是否包含到编译器的include目录中...
    还有可能要调整一下编译器的include目录顺序,把boost的目录移到最上面
      

  3.   

    up
    估计是boost跟vc自带的stl的冲突导致的,把boost的目录移到最上面
    就优先使用boost的库了
      

  4.   

    改用MFC或控制台工程就没有这些问题了,估计是和WTL犯冲。我试试重设一下目录顺序看看
      

  5.   

    搞定,启用C++异常处理就OK了,哎,这样的问题,真是!#……#¥·¥#·¥%¥