C ++ Qt mehrere Definitionen

8

Ich versuche, eine einfache GUI-Anwendung in Qt mit C ++ mit dem MinGW-Compiler zu erstellen. Der Compiler teilt mir jedoch mit, dass ich eine multiple definition of 'WiimoteScouter::WiimoteScouter(QWidget*)' für line 4 von wiimotescouter.cpp habe. Ich verwende eine Überprüfung, um sicherzustellen, dass die Kopfzeile nicht mehrfach enthalten ist, aber anscheinend funktioniert es nicht, und ich bin mir nicht sicher, warum.

Hier ist die Header-Datei:

%Vor%

Und hier ist die cpp-Datei:

%Vor%

Zuletzt die main.cpp:

%Vor%     
John M. 11.02.2011, 01:50
quelle

6 Antworten

37

Ich habe gesehen, dass dies schon einmal passiert ist, als eine Quelldatei in der Projektdatei (.pro oder .pri) dupliziert wurde. Überprüfen Sie alle Zeilen "SOURCES=" und "SOURCES +=" in Ihrer Projektdatei und stellen Sie sicher, dass die cpp-Datei nicht mehr als einmal dort ist.

    
jwernerny 11.02.2011, 14:58
quelle
2

Ich verwende MinGW nicht, aber das klingt eher nach einem Linker-Fehler als nach einem Compiler-Fehler. Wenn dies der Fall ist, sollten Sie prüfen, ob die .CPP-Datei nicht zweimal zum Projekt hinzugefügt wurde. Ich bemerkte auch, dass die Erweiterung "php" ist, das ist sehr ungewöhnlich, da es "cpp" sein sollte.

    
Steve 11.02.2011 02:51
quelle
0

Antwort nur als Referenz:

Ich habe

eingeschlossen %Vor%

statt

%Vor%     
Hector 06.08.2013 00:27
quelle
0

Dies kann auch passieren, wenn Sie zwei .ui-Dateien mit demselben Namen in verschiedenen Ordnern haben. Ihre entsprechenden Header werden im selben Verzeichnis erstellt, was dazu führt, dass eines überschrieben wird. Zumindest war das mein Problem.

    
Assimilater 11.05.2015 04:16
quelle
0

Ich habe diese Fehlermeldung erhalten, wenn ich meine Slot-Deklarationen unter der Signal-Überschrift in der Header-Datei aufgelistet hatte, anstatt in den ersten. Eine andere Sache für jeden, der diese Fehlermeldung hat, nach der er sucht.

Ausschneiden und Einfügen hat das Problem gelöst und ich muss das nächste Mal überprüfen, wenn ich Slots manuell erstelle.

    
user1408605 16.02.2016 14:31
quelle
0

Für mich lag das an Qt's Kompilierungsmodell in Windows mit MinGW.

Mein Code ist perfekt für Linux kompiliert, aber für Windows traten die Linker-Fehler für folgende Dateien auf:

%Vor%

Zuerst konnte ich in der .pro-Datei keine ähnlichen Dateinamen finden. Dann beobachtete ich scharf, dass ich herausfand, dass die externe Google-Protobuf-Bibliothek, die ich gerade kompilierte, einige Bibliotheksdateien in ihrem Ordner hatte:

%Vor%

Die Fälle und die Erweiterungen waren unterschiedlich, aber irgendwie hat es Unordnung in der Qt-Zusammenstellung geschaffen. Ich habe nur einen Unterstrich zu diesen Bibliotheksdateien hinzugefügt und die Dinge funktionierten gut.

    
iammilind 08.06.2017 11:45
quelle