繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM