C++无法打开源文件

18
在使用Visual Studio 2017的C++中,我将一些头文件复制到了我的项目文件夹中,并在"c++解决方案资源管理器"下添加了它们。现在当我写代码时,
#include "name.h"

在包含(include)语句下,出现错误并显示"无法打开源文件"。

为什么会这样,有什么潜在的解决方法?

我刚刚下载了VS,第一次学习c++。


3
请在您的项目属性中验证“附加包含目录”。 - Ceros
8个回答

22
如果您使用的是 Visual Studio,则右键单击项目,然后单击“属性”。在“配置属性”下,单击“C\C++”,然后在“附加包含目录”部分下添加头文件目录。

3
这里有更多关于如何解决这个问题的信息:Visual Studio在哪里查找C++头文件? 我按照xflowXen的答案进行操作,在“包含目录”中输入了我头文件所在的具体路径,后跟一个分号,类似于: C:\Users\name\source\repos\p2-A\p2-A; 然后应用更改,问题就解决了。

2
对于仍然感到困惑的人,你不应该使用三角括号(<>)来#include自己的头文件,而应该使用“引号”。这是一个常见的错误。

引号将首先在本地位置和INCLUDE路径(以各种形式指定)中进行查找。花括号不会在本地位置查找,而是在相同的INCLUDE路径中查找。因此,“你自己的”头文件具有非常特定的含义(相对于.cpp/.c指定的文件),而不是“嘿,我写了那些”。 - David V. Corbin

0

Visual Studio(或者更确切地说是编译器)需要知道在哪里查找包含的文件。请检查您在VS项目中的包含路径。


0

编辑:这个问题最近刚刚更新,这个答案已经不再相关。

对于那些仍然没有找到解决方法的人,请尝试修改/重新下载 Python,并勾选下载调试符号下载调试二进制文件框。

mslearn文章和这个有用的tutorial网站 DelftStack上阅读更多信息。


避免将“这里”链接到没有上下文的外部网站 - 可以详细说明第一个链接是到微软学习网站等。 - Jen
1
抱歉,加了一些背景信息。 - Captain Quack

0

注意:如果您使用Microsoft Visual Studio IDE,则此答案很好。

通常情况下,当编译器无法找到头文件时,会出现此错误。

您可以尝试以下步骤:

  1. 在“解决方案资源管理器”窗口中右键单击项目名称。
  2. 选择“属性”。
  3. 在“配置属性”下,单击“C/C++”。
  4. 在“常规”下,在“附加包含目录”部分下添加头文件的目录。
  5. 保存更改并尝试重新构建项目。

0
打开项目属性,将配置和平台设置为ALL,然后在C/C++ -> General -> Additional Include Directories中添加$(SolutionDir)(如果解决方案存储在项目所在的位置,请使用此选项;如果不是,请导航到您存储项目头文件的任何位置并按Enter键)。

-18
#include<iostream.h>
#include<conio.h> 
#include<stdlib.h> 
using namespace std; 

int divide(int num, int den) 
{
   if(den==0) 
   { 
      return -1; 
   } 
   if((num%den)==0) 
   { 
      return 1; 
   } 
   else 
   {    
      return 0; 
   } 
} 

int divide(int a) 
{ 
   int j = a/2, flag = 1, i; 

   for(i=2; (i<=j) && (flag); i++) 
   { 
      if(a%i == 0) 
      { 
         flag = 0; 
      } 
   } 
   return flag; 
} 

void main() 
{ 
   clrscr(); 
   int choice, res, a, b; 

   do 
   { 
      cout<<"1.Check for divisibility\n"; 
      cout<<"2.Check for Prime\n"; 
      cout<<"3.Exit\n"; 
      cout<<"Enter your choice(1-3): "; 
      cin>>choice; cout<<"\n"; 
      switch(choice) 
      { 
         case 1: 
            cout<<"Enter numerator and denominator: "; 
            cin>>a>>b; 
            res = divide(a, b); 
            if(res == -1) 
            { 
               cout<<"Divide by zero error..!!\n"; break; 
            } 
            cout<<((res) ? "It is" : "It is not")<<"\n"; 
            break; 
         case 2: 
            cout<<"Enter the number: "; 
            cin>>a; 
            res = 0; 
            res = divide(a); 
            cout<<((res) ? "It is" : "It is not")<<"\n"; 
            break; 
         case 3: 
            cout<<"Exiting...press any key..."; 
            getch(); 
            exit(1); 
         default:
            cout<<"Wrong choice..!!"; 
      } 
      cout<<"\n"; 
   }while(choice>0 && choice<=3); 
   getch(); 
}

12
有人能解释一下这段代码与问题到底有什么关系吗? - drescherjm
不知道这段代码在做什么/应该做什么。你应该添加一些解释。 - Crann Moroney

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接