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?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!