【问题标题】:Cannot open include file with Visual Studio无法使用 Visual Studio 打开包含文件
【发布时间】:2013-10-25 06:46:05
【问题描述】:

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

#include "includedFile.h"

#include "include/includedFile.h"

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

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

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

这是相关类的代码:

Public.h:

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

Public.cpp:

    #include "Public.h"


    Public::Public(void)
    {
    }


    Public::~Public(void)
    {
    }

它是如何被收录的:

    #include "Public.h"

【问题讨论】:

  • 看到这条评论stackoverflow.com/a/31730081/185022它应该被标记为正确的解决方案
  • 检查配置和平台(调试/发布,Win32/x64)是否与您对解决方案属性(例如“其他包含目录”)所做的任何更改的配置和平台相匹配。

标签: c++ visual-studio visual-studio-2012 include codeblocks


【解决方案1】:

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

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

【讨论】:

  • 它们在项目文件夹中,我在两个目录中都添加了项目的路径,唉,它不起作用
【解决方案2】:

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

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

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

【讨论】:

  • 它们在项目文件夹中,我在两个目录中都添加了项目的路径,唉,它不起作用
  • 对不起,这是不可能的。这是一件非常简单的事情,如果您输入了正确的路径,它应该会打开。如果它们在项目文件夹中,请不要添加项目路径 - 您只需 #include "file.h"。您可以做的最后一件事是右键单击项目 -> 添加 -> 新项目 -> 头文件然后包含它,该文件将在您的项目目录中自动创建。如果它不起作用,则说明您的 Visual Studio 有问题。
  • 是的,看我的编辑。此外,我似乎对包含在属于标题的类中没有任何问题,就在其他地方
  • @user2853108 “包含在属于标题的类中的问题”是什么意思?请澄清。
  • 确保它确实在您的包含目录中,而不仅仅是在项目树中。对我来说,粘贴到项目树实际上并没有将文件放入项目目录!
【解决方案3】:

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

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

【讨论】:

    【解决方案4】:

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

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

    我的包含如下所示:#include <ftdi.h>

    但是当我将其更改为:#include "ftdi.h" 时,它找到了它。

    【讨论】:

    • 这是我的解决方案。这次真是万分感谢!现在我想知道“”应该是什么......
    • 在我看来,<> 用于系统文件,然后引号用于项目中包含的文件。
    • 这是 Visual Studio 如何使用括号包含 (<>) 与引号包含 ("") 的确切定义:docs.microsoft.com/en-us/cpp/preprocessor/…。摘要:括号<> 将严格遵守“包含目录”设置。引号"" 也会做“包含目录”,但会先搜索本地项目目录。
    【解决方案5】:

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

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

    【讨论】:

    • 虽然这不是问题的最可能原因,但它是我的。
    • 如果您没有找到项目 -> 属性 -> 配置属性 -> C/C++ -> 常规,请确保您在项目中有一个 cpp 文件并进行构建(这将失败,但将生成属性)。
    • 主动配置让我着迷!我正在更改 Release 的设置并为 Debug 编译(VS 默认为 Release,即使我有 Debug 处于活动状态)。您可能希望为包含目录选择“所有配置”。
    • 第二句话是关键!你的救命稻草...犯了多么愚蠢的错误:-P 谢谢!!!
    【解决方案6】:

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

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

    【讨论】:

      【解决方案7】:

      对我来说,它有助于像这样链接项目当前目录:

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

      希望这会有所帮助。

      【讨论】:

        【解决方案8】:

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

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

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

        【讨论】:

        • 非常感谢。这是我的问题。在 vc2008 中,设置对话框是使用当前设置打开的。
        【解决方案9】:

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

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

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

        【讨论】:

          猜你喜欢
          • 2016-07-02
          • 2013-04-30
          • 1970-01-01
          • 2022-07-02
          • 2012-06-23
          • 2016-11-29
          • 2020-02-21
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多