Visual Studio 2012:C++编译器忽略用户指定的包含目录

Kyl*_*tan 9 c++ mfc visual-studio-2012

我有一个常见的错误fatal error C1083: Cannot open include file: 'afxres.h': No such file or directory.搜索引擎显示了大量的点击,但没有一个建议的解决方案适合我.

通常这似乎是路径的问题.因此,我确保安装了相关的库,并找到了该文件.使用绝对路径作为#include工作正常:

#include "C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\atlmfc\include\afxres.h"

但是,如果我将目录(C:\ Program Files(x86)\ Microsoft Visual Studio 11.0\VC\atlmfc\include)添加到项目设置(或Microsoft.Cpp.Win32.User属性表),并尝试此行:

#include "afxres.h"

我再次收到错误C1083.然而Visual Studio显然可以找到该文件 - 如果我右键单击文件名并选择"打开文档'afxres.h'",它会立即打开它!

为什么Visual Studio会忽略我指定的#include路径?我以类似方式包含的其他#include路径完美运行.

目录明确包含在构建设置中

Han*_*ant 4

但我之前确实有 Visual C++ 2010 Express,它似乎从中导入了一些设置

这是最重要的评论。Express 不支持 ATL 和 MFC。仍然缺少的是,您仅在之前在 VS2010 上启动的项目中遇到此问题。

请注意,不需要像在项目属性表中那样添加路径。在屏幕截图中可见,它已经被$(VCInstallDir)atlmfc\include继承属性中的条目覆盖。所以得出的结论是 $(VCInstallDir) 宏值是错误的。

除了安装事故或注册表损坏之外,当您转换之前在 VS2010 中启动的项目时,也可能会发生这种情况。从“属性管理器”切换回“解决方案资源管理器”窗口,右键单击您的项目、“属性”、“常规”页面。将“平台工具集”设置从 v100 更改为 v110。您现在将使用 VS2012 包含目录而不是 VS2010 Express 目录。

请注意,对 Microsoft.Cpp.Win32.User 项目属性表的更改将影响您的所有项目,您需要将其重置回来。