无法用Visual Studio打开包含文件

时间:2013-10-16 23:08:50

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

我最近从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"

9 个答案:

答案 0 :(得分:29)

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

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

答案 1 :(得分:20)

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

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

答案 2 :(得分:17)

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

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

答案 3 :(得分:15)

默认情况下,Visual Studio会在项目所在的文件夹($ ProjectDir)和默认标准库目录中搜索标头。如果您需要包含未放置在项目目录中的内容,则需要添加要包含的文件夹的路径:

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

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

答案 4 :(得分:5)

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

我把文件放在同一个目录中,但我仍然无法找到。

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

但是当我把它更改为:#include "ftdi.h"然后就找到了它。

答案 5 :(得分:1)

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

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

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

答案 6 :(得分:0)

如果您尝试了其他答案,但仍然找不到包含文件,请执行以下一些附加调试步骤和健全性检查:

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

答案 7 :(得分:0)

这是一个奇怪的解决方案(老实说,我不完全理解),这是我对这个问题的回答。

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

希望这会有所帮助。

答案 8 :(得分:0)

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

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

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