我正在使用 VS2010 Express 并且刚刚安装了 Boost v1_47。我已将“包含”文件夹添加到“附加包含文件夹”选项中,并将“lib”文件夹添加到 VS 中的“附加库”选项中。
然后,我在我的一个文件中包含了 boost/regex.hpp,但实际上还没有使用 boost 编写任何代码。但是,在构建解决方案时,我收到很多错误消息,有两种形式:
- 重新定义错误,例如:
1>D:\boost\boost_1_47\boost/detail/interlocked.hpp(83): error C2373: '_InterlockedCompareExchangePointer' : 重新定义;不同的类型修饰符 1> C:\Program Files\Microsoft SDKs\Windows\v7.1\include\winnt.h(2597) : 参见 '_InterlockedCompareExchangePointer' 的声明
- 无效的调用约定错误(很多),例如:
D:\boost\boost_1_47\boost/regex/v4/regex_traits_defaults.hpp(271): 错误 C3641: 'boost::re_detail::global_lower' : 使用 /clr:pure 或 /clr 编译的函数的调用约定 '__cdecl' 无效:安全的
注意:我没有在我的任何源/头文件中明确包含 winnt.h,并尝试取消激活预编译的头文件并删除 stdafx.h 包含,但它没有解决问题。
这是怎么回事?
提前致谢