我从 SourceForge(HoboCopy,如果你好奇的话)检查了一个 C++ 应用程序的副本并尝试编译它。
Visual Studio 告诉我它找不到特定的头文件。我在源码树中找到了这个文件,但是我需要把它放在哪里,这样编译的时候才能找到呢?
有专门的目录吗?
我从 SourceForge(HoboCopy,如果你好奇的话)检查了一个 C++ 应用程序的副本并尝试编译它。
Visual Studio 告诉我它找不到特定的头文件。我在源码树中找到了这个文件,但是我需要把它放在哪里,这样编译的时候才能找到呢?
有专门的目录吗?
Visual Studio 按以下顺序查找标头:
在您的情况下,将标题所在的目录添加到项目属性(Project Properties → Configuration → C/C++ → General → Additional Include Directories)。
实际上,在我的带有 Visual Studio 2017 社区的 Windows 10 上,C++ 标头路径是:
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include
C:\Program Files (x86)\Windows Kits\10\Include\10.0.17134.0\ucrt
第一个包含标准 C++ 头文件,例如<iostream>
, <algorithm>
. 第二个包含旧的 C 标头,例如<stdio.h>
, <string.h>
。版本号可能因您的软件而异。
希望这会有所帮助。
如果项目附带 Visual Studio 项目文件,那么应该已经配置为为您查找标头。如果没有,您必须将包含文件目录添加到项目设置中,方法是右键单击项目并选择属性,单击“C/C++”,然后将包含包含文件的目录添加到“附加包含目录”编辑框。
Visual Studio 2015 社区中似乎存在一个错误。对于 64 位项目,找不到包含文件夹,除非它位于 win32 位配置的附加包含文件夹列表中。
试图将此作为评论添加到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
(可能不是微软推荐的。)
有一个较新的问题是什么更好地解决了这个问题,询问包含路径在 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-File 预计将驻留在该目录中。
然后你按照 VisualStudio 的方式进行操作,一切都很正常。
有关为什么要这样做的更多信息,请参阅我的回答。