错误“无法打开包含文件”,但它不包含在代码中
Posted
技术标签:
【中文标题】错误“无法打开包含文件”,但它不包含在代码中【英文标题】:error "Cannot open include file", but it's not included in code 【发布时间】:2013-06-25 09:05:58 【问题描述】:在 Visual Studio 2012 中安装 11 月 CTP 后出现错误。
错误在 boost 库的 unordered_set.hpp
中。但我没有在代码中的任何地方包含unordered_set
或initializer_list
。我只在一个文件中使用了 boost,我相信这不是原因。
unordered_set.hpp 中的错误:
#if !defined(BOOST_NO_0X_HDR_INITIALIZER_LIST)
#include <initializer_list> //error C1083: Cannot open include file: 'initializer_list': No such file or directory d:\boost\unordered\unordered_set.hpp
#endif
编辑:
之后我卸载了 11 月 CTP,但仍然出现同样的错误。
【问题讨论】:
使用“显示包含”选项来查看会发生什么 Where is _CPPLIB_VER defined and is it modifiable in visual studio 的可能重复项 【参考方案1】:C++11
在 VS2012 中默认启用。
来自boost
标头
#if !defined(BOOST_NO_0X_HDR_INITIALIZER_LIST)
#include <initializer_list>
#endif
您可以尝试定义BOOST_NO_0X_HDR_INITIALIZER_LIST
,或查找initializer_list
标头位置。
// config/suffix.hpp
#if defined(BOOST_NO_INITIALIZER_LISTS) && !defined(BOOST_NO_0X_HDR_INITIALIZER_LIST)
# define BOOST_NO_0X_HDR_INITIALIZER_LIST
#endif
// config/compilers/visualc.hpp
#if _MSC_VER <= 1500 || !defined(BOOST_STRICT_CONFIG) // 1500 == VC++ 9.0
# define BOOST_NO_INITIALIZER_LISTS
#endif
BOOST_STRICT_CONFIG
可以在config/user.hpp
中评论。
但是,您似乎没有现代 Visual C++ 标头,这很奇怪,因为您有 VS2012(initializer_list
标头实际上将添加到 VS2010 中)。
【讨论】:
@zwx 看起来很不真实。 ***.com/questions/3536029/… 这很奇怪。我卸载了 11 月的 CTP,但仍然遇到同样的错误。【参考方案2】:今天遇到同样的问题,发现安装11月CTP还不够,需要将项目配置下的平台工具集改为Microsoft Visual C++ Compiler Nov 2012 CTP (v120_CTP_Nov2012)
才能真正使用新功能,希望对大家有帮助。
【讨论】:
以上是关于错误“无法打开包含文件”,但它不包含在代码中的主要内容,如果未能解决你的问题,请参考以下文章
错误 C1083:无法打开包含文件:'crtdbg.h':没有这样的文件或目录
致命错误 C1083:无法打开包含文件:'boost/regex.hpp':没有这样的文件或目录
无法在 Windows 中安装 pycocotools:致命错误 C1083:无法打开包含文件:'io.h':没有此类文件或目录错误:
致命错误 C1083:无法打开包含文件:“openssl/opensslv.h”
在 Windows x64 中运行 Cython - 致命错误 C1083:无法打开包含文件:'basetsd.h':没有这样的文件或目录