2012-09-19 11 views
22

Ho creato un progetto "Demo" vuoto in Visual Studio 2008 e aggiunto alla mia soluzione alcuni progetti esistenti. Incluso "MyHeader.h" (intestazione di altro progetto) nel file main.cpp che si trova in "Demo". Aggiunge anche il percorso dei file di intestazione nella sezione "Strumenti/Opzione/VC++ Directories/Include files". Ma intellisense dice: "File 'MyHeader.h' non trovato nella directory del file sorgente corrente o nei percorsi del sistema di compilazione ..."Visual Studio non può "vedere" i miei file di intestazione inclusi

Come si può risolvere il problema? Grazie.

+1

C'è differenza tra #include e #include "file.h". http://stackoverflow.com/questions/21593/what-is-the-difference-between-include-filename-and-include-filename Inoltre, suggerisco di utilizzare il percorso relativo anziché utilizzare le directory VS. Ciò garantirà che il progetto sia indipendente dalla posizione. – Ram

+1

solo intellisense fornisce questi errori (ad esempio, la configurazione normale funziona correttamente)? quindi proverei a fermare Visual Studio (possibilmente rimuovere i file .suo/.sdf per i progetti interessati), riavviare vs – codeling

risposta

13

Se si seleziona Project e quindi All Files nel menu, tutti i file devono essere visualizzati in Esplora soluzioni che si trovano fisicamente nella mappa del progetto, ma non (ancora) inclusi nel progetto. Se fai clic con il pulsante destro del mouse sul file che desideri aggiungere in Esplora soluzioni, puoi includerlo.

1

Prova ad aggiungere il file di intestazione ai file del progetto. (tasto destro del mouse su progetto -> aggiungi file esistente).

+0

che non fa trovare al compilatore le intestazioni - è necessario impostare la directory include per quello – codeling

+0

@RandolphCarter che è parlando di intellisense non il compilatore. Sono consapevole che ciò non aiuta il compilatore. Ciò di cui il compilatore ha bisogno è l'impostazione in "Strumenti/Opzione/VC++ Directories/Include files" che ha già impostato. –

+0

L'aggiunta delle intestazioni aiuta l'intellisense? strano, non dovrebbe il compilatore e l'intellisense usare le stesse opzioni? – codeling

0

Nella mia esperienza, con VS2010, quando non è possibile trovare i file di inclusione in fase di compilazione, eseguire una pulizia, quindi la compilazione di solito risolve il problema. Non è raro che l'editor sia in grado di aprire un file include e quindi il compilatore di annunciare che non è in grado di trovare quello stesso file, anche quando è aperto sullo schermo!

16

Elimina il file .sdf che si trova nella directory della soluzione. È solo il database Intellisense e Visual Studio lo ricrea la prossima volta che apri la soluzione. Questo db può essere danneggiato e causare l'IDE a non essere in grado di trovare le cose, e dal momento che il compilatore genera queste informazioni per se stesso al volo, non sarebbe interessato.

+0

Questo è tipicamente necessario quando si modificano manualmente i file di progetto (* .vcxproj e * .vcxproj.user): l'IDE non ha idea delle proprie modifiche e quindi non aggiorna il database intellisense di conseguenza. – Dominique

+2

Funziona per me in Visual Studio 2015 –

+1

Con VS2017 ho trovato Browse.VC.db e Solution.VC.db in project_dir/.vs/project_name/v15/e ho cancellato questi file. Intellisense è stato quindi in grado di correggere ricreare il suo db. – Krapow

2

Se solo l'IDE indica che non è possibile trovare i file inclusi, ma la compilazione ha esito positivo, il problema è semplicemente che IntelliSense non è completamente aggiornato con le modifiche recenti. Questo può accadere in modo specifico quando includo progetti esistenti, nella mia esperienza personale. L'eliminazione del file .sdf (= database IntelliSense) generato nella directory della soluzione impone a Visual Studio di rigenerarlo, in modo che sia di nuovo aggiornato. Solo fare un "pulito" probabilmente farà la stessa cosa, ma richiede più tempo poiché tutto verrà generato nuovamente.

2

So che questa è una domanda più vecchia, ma nessuna delle risposte di cui sopra ha funzionato per me. Nel mio caso, il problema si è rivelato che avevo percorsi di inclusione assoluti ma senza lettere di unità. La compilazione andava bene, ma Visual Studio non è riuscito a trovare un file di inclusione quando ho fatto clic con il pulsante destro del mouse e ho provato ad aprirlo. L'aggiunta delle lettere di unità ai miei percorsi di inclusione ha corretto il problema.

Non consiglierei mai le lettere di unità hard-coding in qualsiasi aspetto dei file di progetto; o usare percorsi relativi, macro, variabili d'ambiente o qualche mix dell'albero per qualsiasi situazione permanente. Tuttavia, in questo caso, sto lavorando ad alcuni progetti temporanei in cui erano necessari percorsi assoluti a breve termine. Non essere in grado di fare clic con il pulsante destro del mouse per aprire i file è stato estremamente frustrante e, si spera, ciò aiuterà gli altri.

0

Ecco come ho risolto questo problema.

  • Vai a Progetto -> Mostra tutti i file.

enter image description here

  • clic destro tutti i file in Esplora soluzioni e fare clic su Includi nel progetto in tutti i file che si desidera includere.

enter image description here

Fatto :)

1

Se il visual studio dice che ti manca qualche file nella cartella del file sorgente corrente, c'è una soluzione che ho usato. Basta fare clic destro sul file che si desidera aggiungere e scegliere Open Document, se davvero non esiste, quindi dovresti vedere qualcosa come cannot find file in the source file path = "somewhere in your computer", quindi quello che potresti fare è aggiungere prima il file sorgente in quel percorso e vedere se funziona.

0

Questo mi è successo proprio ora, dopo aver spento e riavviato il computer. Alla fine ho capito che l'architettura era stata in qualche modo modificata in ARM da x64.