11

我有一个常见的错误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 路径可以完美运行。

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

4

2 回答 2

4

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

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

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

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

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

于 2013-07-05T00:04:00.480 回答
1

首先,确保在项目属性 > 配置属性 > 常规中启用了 MFC

使用 mfc 必须设置为静态或动态库。

其次,要确保 cl.exe 正在使用您指定的所有包含目录,您需要转到项目属性 > c/c++ > 常规并将抑制启动横幅更改为 no /nologo-

这将为您提供每个源文件的完整 cl 命令,准确显示 Visual Studio 尝试对您提供的代码和配置选项执行的操作。

例如。cl /c /ZI /nologo- /W3 /WX- /Od /Oy- /D WIN32 /D _DEBUG /D _CONSOLE /D _UNICODE /D UNICODE /Gm /EHsc /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Yc"StdAfx.h" /Fp"Debug\test.pch" /Fo"Debug\\" /Fd"Debug\vc100.pdb" /Gd /TP /showIncludes /analyze- /errorReport:prompt stdafx.cpp

-I如果它正在使用您的额外包含文件夹,您应该在命令行中看到很多额外的开关。

于 2013-07-09T07:30:51.000 回答