Q_Object
-
Hallo,
ich wollte bei Qt einen Slot anlegen. Allerdings bekomme ich immer einen Fehler:#ifndef TEST_H #define TEST_H #include <QObject> class Test : public QObject { Q_OBJECT public: Test(); private slots: void test(); }; #endif // TEST_H
#include "test.h" Test::Test() { } void Test::test(){ }
Eigentlich noch nichts gemacht. Aber ich bekomme: "
error: collect2: ld returned 1 exit status" Habe ich wo einen Fehler?
-
qmake ausführen, neu kompilieren
-
Ich nutze QtCreator ein bereinigen und neu compilieren hat nichts gebracht.
-
Dein Code ist korrekt geschrieben. Nur meldet nicht der Compiler den Fehler. ld ist der Linker.
Kontrolliere, ob alle benötigten Bibliotheken auf deinem Rechner sind und vom Compiler gefunden werden. Wenn das nur ein Auszug aus der Fehlermeldung war, wäre es ratsam sich den gesamten Text der Meldung anzusehen. Das ist zwar etwas mühsam, aber doch recht aufschlussreich . . .
-
Kann mehrere Ursachen haben, war bei mir auch öfters, wenn ich zum Beispiel gedebuggt habe, den Debuger zwar angehalten habe, aber nicht gestoppt, sprich das Programm war eigentlich noch offen.
Dann neu kompiliert und gelinkt, also build gemacht und schon kam der Fehler.Ansonsten wie schon gesagt, kann auch sein dass ne Lib net richtig gelinkt wird oder net gefunden.
Gruß freeG
-
Nooby123 schrieb:
Ich nutze QtCreator ein bereinigen und neu compilieren hat nichts gebracht.
Zwutz hat auch "qmake neu ausfuehren" erwaehnt.
-
Kannst du mal das zugehörige .pro posten, sowie den genauen Fehler? Es ist zwar in diesem Fall recht wahrscheinlich was kommt, aber trotzdem ist es nicht schlecht das nochmal genau zu sehen.
-
Vergiss die .pro -- ich habe den Code mal abgetippt und versucht ihn zu übersetzen. Hat einwandfrei funktioniert. Nach ein bisschen rumprobieren kam dann die Lösung:
Ich habe vorausgesetzt, dass die Funktion main() irgendwo in seinem Text steht. Ist wohl aber nicht so. Nachdem ich die weggelassen habe, kam die gleiche Fehlermeldung wie beschrieben. Allerdings steht in der ersten Zeile der Fehlermeldung die genaue Ursache: Fehlende main()-Funktion! ! !