Visual Studio不支持包含目录

时间:2010-09-24 20:13:05

标签: visual-studio visual-studio-2008

libheader source files中,我一直处于这种情况,其中visual studio不尊重其他包含目录。例如,我刚刚下载了MyGUI源代码,并确保包含目录是正确的。我甚至把它们放到绝对路径上,Visual Studio仍然抱怨它找不到特定的头文件。

是否有人在项目中遇到同样的事情,如果有的话,是否有解决这个问题的方法?Blockquote

  

编辑:对于无法完全解释,我深表歉意。我知道库和源文件有不同的包含目录。我收到的项目具有其他包含目录和附加库目录的正确目录路径,但Visual Studio仍然无法正确识别它们。我可以右键单击并在Visual Studio中打开头文件,但在编译时仍抱怨它无法找到所需的头文件。我经常根据自己编写的框架制作项目,所以我非常熟悉如何设置依赖项。然而,这是第二次出现这种情况。我不记得上次尝试编译的第三方项目,但Visual Studio只是拒绝相信Additional Include Directories路径应该在哪里查找头文件。我不知道如何提供这个特定库(MyGUI)的完整细节,但我可以指向您可以下载它的网站,试着看看它是否能够找到项目中包含的头文件(如果它不编译,那很好,这可能是因为其他依赖项,但它至少应该能够在公共文件夹中找到文件,特别是当我在其他包含目录中放置绝对路径时)

12 个答案:

答案 0 :(得分:38)

这件事发生在我身上。结果发现Debug与Release版本的不一致。当我修改一个构建时,正在编译另一个构建。请使用相同的包含文件夹设置两个版本,看看它是否有效。祝好运。

答案 1 :(得分:4)

我发现(偶然)解决方案(我认为)。它与操作系统强加的字符限制有关。虽然限制应该是260,但对于我来说它低于150,see this discussion and links to it。我将文件下载并解压缩到C:\Users\MyUserName\My Documents\Downloads\Downloads From Chrome\MyGui3.0... [等等]。我很久以前就学会了不要尝试在如此漫长的道路上编译项目,但这次它完全让我不知所措,因为VS根本没有给我一个警告,并指出了错误的方向。无论如何,将项目剪切并粘贴到D:\修复了问题。 我不打算给答案勾选,直到有人证实这一点。

答案 2 :(得分:2)

你能详细说明吗?如果我记得,Visual Studio中至少有两个地方可以配置它:

  1. 每次安装:Tools/Options/Projects and Solutions/VC++ Directories
  2. 每个项目:Project/Properties/Configuration Properties/"C/C++"/General/Additional Include Directories
  3. 如果你要添加每个项目的包含目录(#1),我认为你是,然后尝试从另一个项目中包含,这显然不起作用。尝试在每个安装级别添加它们,看它是否有效。

    此外,这可能听起来很愚蠢/简单,但要确保路径正确(即复制粘贴到资源管理器的路径栏中,看看头文件是否在该文件夹中)。

答案 3 :(得分:1)

如果lib文件是指库(.lib)文件,则不通过C / C ++ / General / Additional Include Directories指定目录位置,而是通过链接器/常规/附加库目录指定。

如果你考虑它是合乎逻辑的。 C / C ++选项是所有编译选项,涉及编译.cpp和.h文件的设置。链接器选项是所有链接选项,涉及链接.obj和.lib文件的设置。

答案 4 :(得分:1)

我遇到了同样的问题:即使添加了附加的include目录,也找不到.suo文件。

Additional include directory in Visual studio 2015 doesn't work的答案中,我尝试了:

  

删除{{1}}文件并重新启动VS

然后它对我有用。

答案 5 :(得分:1)

我刚刚花了几个小时来应对编译器中#include路径失败,编译器与智能感知之间的不一致。

我终于发现,在* .cpp文件的属性中-不是项目,而是在单个* .cpp文件的属性中-“其他包含目录”属性是空白。我必须将其显式设置为“从父级或项目默认值继承” –在对话框的左下角附近有一个复选框,用于编辑目录路径。

我已从另一个项目复制了此文件,并使用“添加>现有项目...”将其添加到当前项目中。我的假设是,“现有项目”过程可能跳过了“新项目”通常会执行的属性初始化步骤。但是我只是通过添加另一个现有的和新的来检验该假设。这两个文件的属性都设置为从项目继承,因此我没有解释为什么我的问题文件最初没有设置为继承。

无论如何……经过无奈之后,找到并修复了那个。

答案 6 :(得分:0)

我的c ++项目中出现了相同的症状。从标题导航到标题很顺利,但在切换到标题的源文件后(让我们说foo.cpp),导航到该源文件中的#include <bar.cpp>失败。我收到以下错误:

  

文件&#39; bar.cpp&#39;在当前源文件的目录或构建系统路径中找不到。

经过研究,我注意到错误中给出的系统构建路径没有用项目的包含路径扩展。换句话说:IntelliSense不知道源文件(foo.cpp)是项目的一部分,因此它没有使用项目的包含路径来搜索{{1 }}

我的修复是创建一个文件#include <bar.cpp>(文件名并不重要),它是项目的一部分,但是从构建中排除。此文件包含每个源文件的包含。例如:

intelliSense.cpp

这样,IntelliSense知道这些源文件是项目的一部分,因此将使用项目的包含路径来解析这些源文件中的#include <foo.cpp> #include <bar.cpp> ...

答案 7 :(得分:0)

我也有这个问题。就像sam所说的那样 - 包含框架路径的字符串值必须与Debug和Release配置相同。所以最好的方法是选择&#34;配置:所有配置&#34;和平台:所有平台&#34;从项目属性窗口顶部的两个上下文清单中输入或从Windows资源管理器地址栏复制之前。

答案 8 :(得分:0)

对我来说,问题在于.vcxproj项目文件为只读,并且在我将目录添加到“其他目录”之后,该项目文件实际上并未更改。令我惊讶的是,VS没有抱怨这个文件是只读的。

因此,在使该文件可写之后,我可以编译我的项目。

答案 9 :(得分:0)

这是vs2015中的另一个“我也有相同...”。

对我来说,活动设置还取决于“解决方案配置”和“解决方案平台”。这将进行4个设置,所有设置应相同。

这解决了我的问题。

答案 10 :(得分:0)

我意识到这个问题此时已经超过 10 年了,但我也刚刚遇到了这个问题,没有一个答案适合我的情况。在使用我的 IDE(VS 2019)几分钟后,我意识到我使用的 cpp 文件的平台设置为 Win32,但我尝试使用的库是为 x64 构建的。

正如其他人所说,确保您的项目配置设置为 -“所有配置”,当您向项目添加必要的路径时,这也可能是一个问题。我想我的问题不会那么普遍,但我认为值得分享。我希望这能在未来对其他人有所帮助。

答案 11 :(得分:0)

之前未提及的另一个可能原因:确保在多项目解决方案中配置正确项目的属性。

我的问题是我有两个项目的解决方案,每个项目都使用包含包含的同一个文件。事实证明,我仅为两个项目之一正确配置了“附加包含目录”,而完全忘记了另一个项目。当然,错误消息指出只有第二个项目而不是第一个项目有问题。