2011-01-15 1 views
8

Attualmente sto provando a compilare un programma semplice che include due file di intestazione. Li vedo in Solution Explorer, dove li ho inclusi tramite "include file esistenti". Tuttavia, quando eseguo il mio programma ottiene il seguente errore. errore fatale C1083: impossibile aprire il file include: 'FileWrite.h': nessun file o directory di questo tipo. Il problema è che vedo il file incluso nella cartella del Intestazione e nel codice che ho scritto:Come includere i file di intestazione in Visual Studio 2008?

#include "FileWrite.h" 

e poi il resto del codice del programma. C'è qualcos'altro da fare in modo che il compilatore possa vedere il file di intestazione e collegarlo al file .cpp che sto cercando di compilare?

risposta

1

Quando si includono i file, il compilatore prima cerca nella directory corrente (la directory che contiene il file di origine .cpp) quindi nelle directory di inclusione aggiuntive. Se FileWrite.h non si trova nella stessa directory del file sorgente, controllare le directory aggiuntive incluse.

Nella pagina delle proprietà aspetto del progetto presso l'addizionale includono directory e vedere se includono la cartella in cui si trova in FileWrite.h.

10

Ci sono due modi per farlo.

1) Soltanto per il progetto corrente

Select your project -> properties -> C/C++ -> General -> Additional Include Directories - 
Include your header file directory. 

2) Per tutti i progetti

Tools -> Options -> VC++ Directories -> Include files - Add the header file directory. 

Evitare l'uso di 2, poiché sarebbe difficile capire dipendenze per un progetto quando compilazione su un sistema diverso dal tuo.

+0

+1 per osservazioni sulle dipendenze –

15

Se si scrive nel codice qualcosa come #include "FileWrite.h" è necessario assicurarsi che il compilatore possa trovare quel file. Ci sono tre opzioni:

  • FileWrite.h dovrebbe essere sia nella stessa directory del file di codice sorgente (cpp) o
  • percorso di quel file di intestazione dovrebbe devono essere elencati nelle proprietà del progetto (in C/C++ -> Generale -> Ulteriori includere le directory) o
  • percorso potrebbe essere fissato in VisualStudio - aggiungerlo al includere file in Strumenti> Opzioni> Progetti e directory Solutions-> VC++

Quale di queste shell di opzioni deve essere utilizzata dipende dal fatto che l'intestazione abbia origine da questo progetto (prima opzione) o da qualche altro progetto (una qualsiasi delle altre due opzioni).

+0

+1 per * Il percorso di tale file di intestazione dovrebbe essere elencato nelle Proprietà del progetto (in C/C++ -> Generale -> Directory di inclusione aggiuntive) * Così fantastico! –

1

Hai detto che il file si trova nella cartella "intestazioni". Questo potrebbe significare le intestazioni filtro o una vera e propria directory di intestazioni sul filesystem. Quando includi un file dal tuo progetto, devi specificare il percorso dal file che stai includendo. Quindi, se si ha qualcosa in questo modo:

src/main.cpp 
include/my_object.h 

Si potrebbe utilizzare #include "../include/my_object.h" in main.cpp.

Questo è per le directory.Le cartelle che vedi nel tuo progetto sono chiamate filtri e non hanno assolutamente alcuna relazione con la struttura di directory del tuo progetto, a meno che tu non lo imponga. È necessario prestare attenzione a come appare la struttura in Windows Explorer per accertare quale percorso utilizzare in un'istruzione di inclusione.