29

我最近从Code::Blocks转到了 Visual Studio,在 Code::Blocks 中可以添加一个类,然后立即包含它。但是,每当我在 Visual Studio 中使用以下语句执行相同操作时:

#include "includedFile.h"

或者

#include "include/includedFile.h"

它不起作用,而是我收到错误:

无法打开包含文件:'includedFile.h';没有这样的文件或目录。

是否有一些我必须勾选的框或设置?还是我必须手动将每个标头添加为依赖项?

这是相关类的代码:

公共.h:

    #pragma once
    class Public
    {
        public:
            static const int SCREEN_WIDTH=1000;
            static const int SCREEN_HEIGHT=1250;
            Public(void);
            ~Public(void);
    };

公共.cpp:

    #include "Public.h"


    Public::Public(void)
    {
    }


    Public::~Public(void)
    {
    }

它是如何被包括在内的:

    #include "Public.h"
4

9 回答 9

40

从例如 gcc 到 Visual Studio 进行 C 编程时,我遇到了同样的问题。确保您的包含文件实际上在目录中——而不仅仅是在 VS 项目树中显示。对我来说,使用其他语言复制到项目树中的文件夹确实会将文件移入。使用 Visual Studio 2010,粘贴到“头文件”中不会将 .h 文件放在那里。

请检查您的实际目录是否存在包含文件。将其放入项目/解决方案资源管理器中的“头文件”文件夹是不够的。

于 2013-12-03T02:56:34.300 回答
38

转到您的项目属性(项目 -> 属性 -> 配置属性 -> C/C++ -> 常规)并在“附加包含目录”字段中添加 .h 文件的路径。

并确保您的配置和平台是活动的。示例:配置:活动(调试)平台:活动(Win32)。

于 2016-05-08T19:41:49.977 回答
17

如果这些包含文件不在项目文件夹中,您需要设置预处理器的路径以搜索这些包含文件。

您可以在VC++ DirectoriesAdditional Include Directories中设置路径。两者都可以在项目设置中找到。

于 2013-10-16T23:19:22.533 回答
15

默认情况下,Visual Studio 在项目所在的文件夹 ($ProjectDir) 和默认的标准库目录中搜索标头。如果你需要包含一些没有放在你的项目目录中的东西,你需要添加文件夹的路径来包含:

转到您的项目属性(项目 -> 属性 -> 配置属性 -> C/C++ -> 常规),然后在字段中Additional Include Directories添加 .h 文件的路径。

您还可以按照 Chris Olen 的建议将路径添加到 VC++ 目录字段。

于 2013-10-16T23:50:47.027 回答
8

我发现这篇文章是因为我在 Microsoft Visual C++ 中遇到了同样的错误。(虽然看起来它的原因与上面发布的问题有点不同。)

我已将我试图包含的文件放在同一目录中,但仍然找不到。

我的包含看起来像这样: #include <ftdi.h>

但是当我把它改成这个: #include "ftdi.h" 然后它找到了。

于 2015-07-30T17:12:06.883 回答
3

如果您的问题仍然存在,那肯定是因为您正在尝试编译与当前设置不同的版本。

例如,如果您Additional Include DirectoriesDebug x64中设置,请确保您使用相同的配置进行编译。

检查这一点:Build > Configuration Manager... >在您的活动解决方案配置中可能有类似的东西:Debug x86 (Win32) platform.

于 2019-03-07T14:13:27.680 回答
2

对我来说,它有助于链接项目当前目录,如下所示:

在属性 -> C++ -> 常规窗口中,而不是将路径链接到“其他包含目录”中的文件。放 ”。” 并取消选中“从父级或项目默认值继承”。

希望这可以帮助。

于 2019-02-27T14:20:48.267 回答
1

#include我也在这里尝试了其他答案,但我的问题与包含路径或缺少不正确s 的文件无关。我有两种配置,每一种都设置为完全相同的包含目录。一种配置可以解决包含问题,另一种则不能。

选择我的项目并转到项目-> 属性后,我通过配置下拉菜单-> 多个配置...选项选择了这两个配置。比较两者,我发现 C/C++ -> Language -> Conformance Mode 是不同的。Default由于某种原因,“不正确”配置的值为,并将其切换到YesNo允许解析路径。

TL;DR:如果您有一个配置具有相同的包含目录,但另一个没有找到文件,我建议您尝试比较配置。

于 2021-04-28T21:08:07.587 回答
0

如果您尝试了其他答案,但仍然找不到包含文件,这里有一些额外的调试步骤和完整性检查:

  • 确保您正在构建代码支持的平台。(如果没有,请考虑将此平台作为目标删除)
  • 验证文件名/路径是否正确。改为将源代码修改#include为头文件的整个绝对路径,看看现在是否可以找到该文件。如果没有,请将源代码中的路径复制粘贴到命令行中,以验证文件是否存在于该完整路径中且没有拼写错误。打开头文件以确保您具有读取权限。(完成后更改源代码。)
  • 如果您已经添加了 的路径Additional Include Directories,请尝试单击 的下拉组合框Additional Include Directories,然后选择<Edit...>。这将向您显示evaluated values路径。(如果它没有显示正确的评估值,则可能未设置路径中的变量。单击Macros>>以查看变量。)将评估的路径复制并粘贴到 Windows 资源管理器中以验证路径是否存在。
  • 创建一个新的空 C++“Windows 控制台应用程序”项目。只设置一个包含目录,#include 只设置 main.cpp 中的一个文件,然后查看它是否构建。
于 2019-02-20T21:09:28.617 回答