Linkfehler. Ich weiß aber keine Lösung...



  • Hallo zusammen, wenn ich das Programm ausführen möchte bekomme ich
    ständig diese Fehlermeldung: 🙄

    main.obj👎 Fehler: LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""public: __cdecl Pkw::Pkw(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >)" (??0Pkw@@QEAA@V?basic_string@DU?basic\_string@DU?char_traits@D@std@@V?$allocator@D@2@@std@@0@Z)" in Funktion "main".

    und

    debug\personal.exe👎 Fehler: LNK1120: 1 nicht aufgelöste Externe

    wenn ich vor

    Pkw pkw01{"VW", "DE"}
    

    Klammern setzte bzw

    Pkw pkw01{"VW", "DE"}
    

    komplett aus dem Quelltext entferne, habe ich das Problem nicht.

    Zu dem ganzen gehört auch noch personal.h und personal.cpp, die ich aber weg lasse da
    sie wahrscheinlich nicht relevant sind.

    Ich bin für jede Hilfe dankbar.

    Schöne Grüße 🙂

    main.cpp

    #include <iostream>
    #include <string>
    #include "personal.h"
    #include <pkw.h>
    
    int main() {
    
      Personal person01{"Maxi Musterfrau", 100481, 2150}; // C++11
      Personal person02{"Marie Muster", 12277}; // C++11
      Personal person03{"Peter Pan"};
    
      Pkw pkw01{"VW", "DE"};
    }
    

    pkw.h

    #include <iostream>
    #include <string>
    #ifndef PKW_H
    #define PKW_H
    
    class Pkw
    {
        std::string hersteller{""};
        std::string land{""};
    public:
        Pkw();
        Pkw(std::string h, std::string l);
    };
    
    #endif // PKW_H
    

    pkw.cpp

    #include <iostream>
    #include <string>
    #include "pkw.h"
    
    Pkw::Pkw(std::string h, std::string l)
    {
        hersteller = "h";
        land = "l";
    
    }
    


  • Da wird wohl pkw.cpp nicht übersetzt und dazugebunden.



  • Fehlt da nicht die Definition des Default-Konstruktors? Deklariert ist er ja in der Header Datei, aber nirgendwo definiert.

    Ich würde mal

    pkw.h

    Pkw();
    

    aus der Header Datei entfernen, oder alternativ die Definition in der .cpp Datei ergänzen.

    pkw.cpp

    Pkw::Pkw()
    {
        hersteller = "h";
        land = "l"; 
    }
    


  • Müsste die Einbindung von pkw.h in der main.cpp nicht in Anführungszeichen stehen? Dann müsste doch zumindest LNK1120 verschwinden, oder?



  • Gast0815 schrieb:

    Müsste die Einbindung von pkw.h in der main.cpp nicht in Anführungszeichen stehen? Dann müsste doch zumindest LNK1120 verschwinden, oder?

    Haben Linkerfehler etwas damit zu tun, dass ein Header nicht gefunden wird?



  • Ups, stimmt. War Quark. Sorry!


Log in to reply