Visual Studio在哪里寻找C ++头文件?


94

我从SourceForge(HoboCopy,如果您很好奇)签出了一个C ++应用程序的副本,并尝试对其进行编译。

Visual Studio告诉我找不到特定的头文件。我在源代码树中找到了该文件,但是我需要将其放在哪里,以便在编译时可以找到它?

有特殊目录吗?

Answers:


113

Visual Studio按以下顺序查找标题:

  • 在当前源目录中。
  • 在项目属性的“其他包含目录”中( C / C ++ |常规”下的“ 项目 -> [项目名称]属性”)。
  • 在Visual Studio C ++中,在工具选项项目和解决方案VC ++ 目录包括目录
  • 在新版本的Visual Studio(2015+)中,不建议使用上述选项,并且可在项目属性配置VC ++目录中找到默认包含目录的列表。

在您的情况下,将标头所在的目录添加到项目属性(“ 项目属性” →“ 配置”C / C ++ →“ 常规” →“ 其他包含目录”)。


3
很好的答案,但我必须补充一点,在Visual Studio 2003中,您应该查看“工具|选项| VC ++目录”,而不是“工具|选项|项目和解决方案| VC ++目录”。
格拉夫

36
仅当使用引用的include语法(例如#include“ whatever.h”)时,VS 2010中的预处理器才会查看当前目录。使用尖括号(例如#包括<whatever.h>)省略当前目录(msdn.microsoft.com/en-us/library/36k2cdd4(v=VS.100).aspx
丹尼斯Münkle

5
在Visual Studio 2010和更新,“标准C ++目录”不再在工具- >选项,是一个全球性的属性表:blogs.msdn.com/b/vsproject/archive/2009/07/07/...
鸣叫Duck

8
我不知道还没有人告诉默认目录。因此,这里是<root dir of Visual Studio>/VC/include/。我以前的用户在工作PC上有一个MSVC,但是我使用的是GNU / Linux,并且不想为了满足查看Microsoft®标题的好奇心而启动VC。顺便说一句,关于我的好奇心是什么:我发现MSDN甚至都不知道它是自己的标题名称!即他们引用了Iphlpapi.h,但是这样的文件不存在,它的名称是iphlpapi.hIPHlpApi.h(都存在)!大声笑
Hi-Angel

17
现在将描述选项“ VS>工具>选项>项目和解决方案> VC ++目录”。
BG BRUNO 2015年

21

实际上,在带有Visual Studio 2017社区的Windows 10上,C ++标头路径为:

  1. C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include

  2. C:\Program Files (x86)\Windows Kits\10\Include\10.0.17134.0\ucrt

的第一包含标准C ++头如<iostream><algorithm>。第二个包含旧的C标头,例如<stdio.h><string.h>。版本号可能会因您的软件而异。

希望这会有所帮助。


1
这是OP的最直接答案。尽管其他答案讨论其他问题,但这应该是公认的答案。
winux

@linrongbin我正在清理由最新VS Build Tools安装创建的目录。您对第一个是正确的。但我未选中Windows SDK的选项,这样实际上意味着我没有C头文件,这反过来又意味着C ++的工作流程,编译工具不支持C.
Hatebit

11

如果该项目随附Visual Studio项目文件,则应该已经对该文件进行了配置,以便为您找到标题。否则,您必须通过以下方式将包含文件目录添加到项目设置中:右键单击项目并选择“属性”,单击“ C / C ++”,然后将包含包含文件的目录添加到“其他包含目录”编辑框。


6

试图将其添加为Rob Prouse的帖子的注释,但是缺少格式使其难以理解。

在Visual Studio 2010中,“工具|选项|项目和解决方案| VC ++目录”对话框报告“已弃用在“工具”>“选项”中编辑VC ++目录”,建议您使用颇似直觉的属性管理器。

如果您确实要更新默认的$(IncludePath),则必须修改其中一个XML文件中的相应条目:

\ Program Files(x86)\ MSBuild \ Microsoft.Cpp \ v4.0 \ Platforms \ Win32 \ PlatformToolsets \ v100 \ Microsoft.Cpp.Win32.v100.props

要么

\ Program Files(x86)\ MSBuild \ Microsoft.Cpp \ v4.0 \ Platforms \ x64 \ PlatformToolsets \ v100 \ Microsoft.Cpp.X64.v100.props

(可能不是Microsoft推荐的。)


6

Visual Studio 2015社区中似乎有一个错误。对于64位项目,除非在win32位配置“ 其他包含文件夹”列表中,否则找不到包含文件夹


3
您是否有此错误的链接或对此的引用?
Preet Sangha

不,我自己找到了它,却没有举报
Markus

5

有一个新问题是什么更好地解决了这个问题,问在Visual Studio中包含路径如何工作?

在更新的VisualStudio版本中已经揭示了执行此操作的方法

  • 仅在当前项目中(因为问题也在此处设置)以及
  • 每个默认的新项目

第二个是上面史蒂夫·威尔金森的答案所解释的,这是他自以为是的,而不是微软的建议。

在这里简短地说:做到这一点,但要在位于用户目录中的

C:\ Users \ UserName \ AppData \ Local \ Microsoft \ MSBuild \ v4.0

在XML文件中

Microsoft.Cpp.Win32.user.props

和/或

Microsoft.Cpp.x64.user.props

而不是在C:\ program files-目录中,Microsoft的未修改Factory文件应该驻留在该目录中。

然后,您可以像VisualStudio一样进行操作,并且一切正常。

有关为什么要这样做的更多信息,请参阅此处的答案。


1
如果仅标题中包含“ C ++”,并确认该错误在32位路径部分中寻找64位路径
Markus,
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.