无法用Visual Studio打开包含文件

问题描述 投票:19回答:8

我最近从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"
c++ visual-studio visual-studio-2012 include codeblocks
8个回答
31
投票

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

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


21
投票

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

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


17
投票

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

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


15
投票

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

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

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


6
投票

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

我把文件,我试图包含在同一目录中,但仍然无法找到。

我的包括这样:#include <ftdi.h>

但当我改变它:#include "ftdi.h"然后它发现它。


0
投票

如果您已尝试其他答案并且仍无法找到您的包含文件,则可以执行以下一些其他调试步骤和完整性检查:

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

0
投票

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

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

希望这可以帮助。


0
投票

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

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

检查一下:Build > Configuration Manager... >在您的活动解决方案配置中可能存在类似问题:Debug x86 (Win32) platform

© www.soinside.com 2019 - 2024. All rights reserved.