Include von .cpp datei funktioniert. Include von .h datei nicht. Was mach ich falsch?
-
Eine Anfänger-Frage bzgl. Include-Problematik.
Ich nutze MSVC und habe ein Problem, das ich nicht gelöst bekomme.Wenn ich die .h-Datei includiere, komme ich auf nen Linker-Fehler. (LNK2019: Verweis auf nicht aufgelöstes externes Symbol ...)
Wenn ich die dazugehörige .cpp-Datei includiere, läuft das Kompilieren durch.Momentan liegt die .h-Datei und auch die .cpp-Datei im gleichen Verzeichnis wie die .cpp-Datei, in die ich includiere.
Wo haben welche Dateien zu stehen, damit das über die .h-Datei funktioniert?
-
Ich nehme mal an, dass die Sourcedatei nicht im Projekt ist.
-
@Hesse Besagte
.cpp
ist vermutlich nicht Teil des Projekts und wird nicht mitkompiliert. Versuche mal die Datei zum Projekt hinzuzufügen. In Visual Studio z.B. mit Rechtsklick auf das Projekt Add -> Existing Item.Der Linker-Fehler bedeutet wahrscheinlich, dass der Linker den Objektcode für eine Funktion nicht finden konnte. Dieser Objektcode wird beim kompilieren aus der Funktionsdefinition erzeugt, welche sich üblicherweise in
.cpp
-Dateien befindet und muss für dem Linker bekannt sein, wenn Code gelinkt wird, der diese Funktion verwendet. Auf hoher Ebene (IDE) erreicht man das, indem man eben die.cpp
-Datei zum Projekt hinzufügt (auf niedrigerer Ebene muss man diese.cpp
-Datei kompilieren und den Linker mit der daraus erzeugten.obj
-Datei füttern).Das
#include
der.cpp
-Datei funktioniert, weil du damit quasi die Funktionsdefinition direkt in deinen eigenen Programmcode "hineinkopierst". So ein#include
ist de facto wie ein Copy+Paste. Die wird damit direkt zum teil deiner eigenen.cpp
-Quellcodedatei. Das funktioniert zwar, ist aber keine saubere Lösung.
-
@Finnegan: Super, das war es,… Datei dem Projekt zugefügt und schwuppdiwupp läuft der Linker durch.
Danke, dass hier in diesem Forum noch solche Anfängerfragen so schnell und kompetent beantwortet werden.