Seite 1 von 1

first defined here / multiple definition of [gelöst]

Verfasst: 18. März 2009 15:49
von Label
Hi,

ich wollte eben ein "älteres Projekt" (4 Monate alt) neu compilieren.
Ich habe mir einen neuen PC zurechtgemacht mit allem was ich brauche (Ubuntu, eclipse, Qt, ...) und nun lässt sich dieses Projekt nicht mehr compilieren.

Ich bekomme für jede einzelne Funktion in meinen Klassen die folgende Fehlermeldung:

Klasse.o: In function `Klasse::Funktion()':
Klasse.cpp:(.text+0x0): multiple definition of `Klasse::Funktion'
Klasse.o:Klasse.cpp:(.text+0x0): first defined here

Und das für ca. 290 Funktionen ...

Da sich das alles auf meinem alten Rechner super compilieren lassen hat, bin ich mir ziemlich sicher, dass da keine Fehler im Quellcode sind.

Kann mir jemand sagen wie solche Fehler zustande kommen können?

Grüße Label

Verfasst: 18. März 2009 15:57
von pfid
Make clean?

Verfasst: 18. März 2009 16:05
von Label
hab ich schon gemacht ...

make clean
make distclean
qmake-qt4
make

dann compiliert er eine Weile und dann bricht er ab mit den ganzen Fehlern (bzw. es ist ja nur ein Fehler, der sich auf alle meine Funktionen auswirkt)

"collect2: ld gab 1 als Ende-Status zurück"
ist dann die letzte Zeile und das war's dann

Verfasst: 18. März 2009 16:11
von Christian81
Eine Datei (oder besser: deren Code) wird mehr als einmal gelinkt. Da ein make clean nichts hilft würde ich mal die Linkanweisung anschauen.
Wie wird das Makefile erzeugt?

Verfasst: 18. März 2009 16:17
von Label
Das Makefile wird, wie oben schon beschrieben, mit qmake-qt4 automatisch erzeugt

Verfasst: 18. März 2009 16:23
von Christian81
Wenn nicht ein Sourcefile in der pro-Datei doppelt drinsteht ist es wohl ein Programmierfehler.

Verfasst: 18. März 2009 16:31
von Label
Oh mein Gott ich glaube es nicht ....
Ich habe keine Ahnung wie das passieren konnte und warum es mir nicht früher aufgefallen ist, aber es war doch tatsächlich jedes File doppelt in meiner .pro vorhanden ... die .CPPs, die Headers und sogar die .ui und die .qrc ... keine Ahnung was da schief gelaufen ist :lol:

Vielen dank für die schnelle Hilfe