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.


Anmelden zum Antworten