105

我从 SourceForge(HoboCopy,如果你好奇的话)检查了一个 C++ 应用程序的副本并尝试编译它。

Visual Studio 告诉我它找不到特定的头文件。我在源码树中找到了这个文件,但是我需要把它放在哪里,这样编译的时候才能找到呢?

有专门的目录吗?

4

7 回答 7

134

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

  • 在当前源目录中。
  • 在项目属性的 Additional Include Directories 中(Project -> [project name] Properties,在 C/C++ | General 下)。
  • 在ToolsOptionsProjects and SolutionsVC++ Directories下的 Visual Studio C++ Include 目录中。
  • 在 Visual Studio (2015+) 的新版本中,上述选项已弃用,默认包含目录列表可在项目属性配置VC++ 目录中找到

在您的情况下,将标题所在的目录添加到项目属性(Project PropertiesConfigurationC/C++GeneralAdditional Include Directories)。

于 2008-12-02T20:55:13.980 回答
34

实际上,在我的带有 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>。版本号可能因您的软件而异。

希望这会有所帮助。

于 2018-10-03T14:49:57.583 回答
12

如果项目附带 Visual Studio 项目文件,那么应该已经配置为为您查找标头。如果没有,您必须将包含文件目录添加到项目设置中,方法是右键单击项目并选择属性,单击“C/C++”,然后将包含包含文件的目录添加到“附加包含目录”编辑框。

于 2008-12-02T20:54:11.190 回答
7

Visual Studio 2015 社区中似乎存在一个错误。对于 64 位项目,找不到包含文件夹,除非它位于 win32 位配置的附加包含文件夹列表中。

于 2016-02-25T22:48:32.917 回答
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

(可能不是微软推荐的。)

于 2012-02-23T10:16:22.740 回答
6

有一个较新的问题是什么更好地解决了这个问题,询问包含路径在 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 的方式进行操作,一切都很正常。

有关为什么要这样做的更多信息,请参阅我的回答

于 2016-02-24T01:52:52.257 回答
0

它在选项“cwd”中提到的目录中查找文件,您可以将所有子目录包含在一个路径下,如下所示。

  • 它将创建一个输出文件。
  • 它将在cwd中指定的目录中编译所有文件

项目结构:

模块测试

-header_files
    - util.h
-source_files
    - util.c
    - main.c

在此处输入图像描述

于 2021-08-31T02:50:23.800 回答