2011-01-15 5 views
8

Ich versuche gerade, ein einfaches Programm zu kompilieren, das zwei Header-Dateien enthält. Ich sehe sie im Solution Explorer, wo ich sie über "include existing files" eingefügt habe. Wenn ich jedoch mein Programm starte, wird der folgende Fehler angezeigt. Schwerwiegender Fehler C1083: Kann die Include-Datei nicht öffnen: 'FileWrite.h': Keine solche Datei oder kein Verzeichnis. Das Problem ist, dass ich die Datei in der Kopfzeile des Ordners und im Code enthalten sehe ich geschrieben habe:Wie Sie Header-Dateien in Visual Studio 2008 einbinden?

#include "FileWrite.h" 

und dann den Rest des Programmcodes. Gibt es noch etwas anderes zu tun, damit der Compiler die Header-Datei sehen und sie mit der .cpp-Datei verknüpfen kann, die ich zu kompilieren versuche?

Antwort

1

Beim Einschließen von Dateien sucht der Compiler zuerst im aktuellen Verzeichnis (dem Verzeichnis, das die Quelle enthält) und dann in den zusätzlichen Include-Verzeichnissen. Wenn sich FileWrite.h nicht im selben Verzeichnis wie Ihre Quelldatei befindet, überprüfen Sie die zusätzlichen enthaltenen Verzeichnisse.

In der Eigenschaftsseite Look des Projektes an den zusätzlichen Einfügeverzeichnisse und sehen, ob sie den Ordner enthalten, in der FileWrite.h in ist.

10

Es gibt zwei Möglichkeiten, dies zu tun.

1) nur für das aktuelle Projekt

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

2) Für alle Projekte

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

Refrain von 2 verwendet wird, da es schwierig sein würde Abhängigkeiten für ein Projekt, um herauszufinden, wenn es Kompilieren auf einem anderen System als Ihres.

+0

+1 für Bemerkung über Abhängigkeiten –

15

Wenn Sie in Ihrem Code etwas wie #include "FileWrite.h" schreiben, müssen Sie sicherstellen, dass der Compiler diese Datei finden kann. Es gibt drei Möglichkeiten:

  • FileWrite.h entweder im gleichen Verzeichnis wie die Quellcodedatei (CPP) oder
  • Pfad zu dieser Header-Datei sollte in Projekt Eigenschaften sein sollte (in C aufgeführt werden sollte/C++ -> Allgemein -> Zusätzliche Includeverzeichnisse) oder
  • Pfad in Ihrem Visual Studio gesetzt werden könnte - fügen sie es Include-Dateien in Extras-> Optionen-> Projekte und Solutions-> VC++ Verzeichnisse

Welche dieser Shell-Optionen verwendet werden kann, hängt davon ab, ob diese Kopfzeile von diesem Projekt stammt (1. Option) oder von einem anderen Projekt (einer der anderen beiden Optionen).

+0

+1 für * Der Pfad zu dieser Header-Datei sollte in den Eigenschaften des Projekts aufgelistet werden (in C/C++ -> Allgemein -> Zusätzliche Include-Verzeichnisse) * So super! –

1

Sie sagten, die Datei befindet sich im Ordner "headers". Dies könnte entweder die Header Filter oder ein tatsächliches Header-Verzeichnis auf dem Dateisystem bedeuten. Wenn Sie eine Datei aus Ihrem eigenen Projekt hinzufügen, müssen Sie den Pfad aus der Datei angeben, in die Sie die Datei einfügen. Also, wenn Sie so etwas wie so hatte:

src/main.cpp 
include/my_object.h 

würden Sie #include "../include/my_object.h" in main.cpp verwenden.

Das ist für Verzeichnisse.Die Ordner, die Sie in Ihrem Projekt sehen, heißen Filter und haben absolut keine Beziehung zur Verzeichnisstruktur Ihres Projekts, es sei denn, Sie erzwingen es. Sie müssen darauf achten, wie die Struktur im Windows Explorer aussieht, um festzustellen, welcher Pfad in einer include-Anweisung verwendet werden soll.