[英]Visual Studio 2012: C++ compiler ignoring user-specified include directories
我有常见的错误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路径完美运行。
但我之前确实有过Visual C ++ 2010 Express,它似乎已经导入了一些设置
这是必不可少的评论。 Express不支持ATL和MFC。 仍然缺少的是你在之前在VS2010上开始的项目中只遇到了这个问题。
请注意,不必像在项目属性表中那样添加路径。 在屏幕截图中可见,它已被继承属性中的$(VCInstallDir)atlmfc\\include
条目所覆盖。 因此得出的结论是$(VCInstallDir)宏值是错误的。
如果您转换了之前在VS2010中启动的项目,则可能会发生安装事故或损坏的注册表。 从Property Manager切换回Solution Explorer窗口,右键单击项目Properties,General页面。 将“平台工具集”设置从v100更改为v110。 您现在将使用VS2012包含目录而不是VS2010 Express目录。
请注意,对Microsoft.Cpp.Win32.User项目属性表的更改将影响您的所有项目,您需要重新设置它。
首先,确保在项目属性>配置属性>常规中启用了MFC
必须将mfc的使用设置为静态或动态库。
其次,要确保cl.exe正在使用您指定的所有包含目录,您需要转到项目属性> c / c ++> general并将suppress startup banner更改为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
开关。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.