QMake -> Fehler

Alles rund um die Programmierung mit Qt
Antworten
Gapa
Beiträge: 63
Registriert: 4. Juli 2008 14:33
Kontaktdaten:

QMake -> Fehler

Beitrag von Gapa »

Hallo,

ich habe mich nun wieder einmal der Sache Qt(4) gewidmet, und wollte mir ein kleines Eingabefenster proggen, welches den eingegebenen Text nach dem Drücken eines Buttons in einer MessageBox ausgibt.

Den Syntax werdet ihr wohl nicht brauchen, denn das Problem liegt nicht am Programm, sondern am Makefile.
Um eine von mir erstellte "get_text_from_edit" - Funktion beim Klicken auf diesen Button aufzurufen, brauchte ich eigene Slots -> ich benötigte das Makro Q_OBJECT.

Und dann gingen die Probleme los....Der altbekannte Fehler:
[Linker error] undefined reference to `vtable for MyWidget'
Im Internet habe ich nach diesem Fehler gesucht, und habe herausgefunden, dass ich qmake dann neu starten müsse.

Das Problem ist jetzt, dass ich noch nie mit qmake gearbeitet habe und mich überhaupt nicht damit auskenne.
Ich weiß nur soviel (bitte verbessert mich, falls ich mich irre):
Ich muss die Eingabeconsole öffnen und per cd - Kommando in den Ordner meines Projekts springen.
Dann muss ich qmake -project eingeben, um eine für qmake lesbares .pro - Anleitung zu erstellen.

Danach müsste ich (wieder im Dos-Fenster) qmake eingeben, um qmake in meinem Ordner auszuführen.

Doch nun kommt da folgende Fehlermeldung:
QMAKESPEC has not been set, so configuration cannot be deduced.
Error processing project file: C:\...
Was bedeutet das und wie kann ich dem Abhilfe schaffen??

Viele Grüße
Gapa
Gestern war heute noch morgen!
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Welcher Compiler?
Gib mal ne explizite spec an --> qmake -spec win32-xxx wobei xxx der Compiler ist den Du verwendest - z.B. win32-g++
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Gapa
Beiträge: 63
Registriert: 4. Juli 2008 14:33
Kontaktdaten:

QMAKE - Fehler

Beitrag von Gapa »

Hallo Christian,

danke erstmal für die Antwort!

Ich benutze den g++ - Compiler.

Doch durch Eingabe folgenden Befehls:
qmake -spec win32-g++
kam folgende Fehlermeldung:
could not find mkspecs for your QMAKESPEC(win32-g++) after trying: C:/iwmake/build_mingw_opensources\mkspecs
Error processing project file: C:\***\Test.pro
Was soll ich denn jetzt machen?
Gapa
Gestern war heute noch morgen!
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Hat qmake Recht bzw. liegt dort dein Qt? Oder hast du es ggf. nach dem Kompilieren woanders hin kopiert/verschoben. Das geht nämlich nicht so ohne weiteres.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Gapa
Beiträge: 63
Registriert: 4. Juli 2008 14:33
Kontaktdaten:

Immer noch!!!!!!!

Beitrag von Gapa »

Hallo nochmal,

also ich habe den Pfad jetzt mal geändert, indem ich den Ordner Qmakespecs an diese Stelle kopiert habe (auch wenn mir das eig nicht so passt, da ich gerne alles beisammen habe) und habe die Commandos wieder ausgeführt.
Es hat auch funktioniert!! Er hat das Makefile erstellt.

Doch beim Compilieren des Projekts kommt wieder der selbe Fehler:
[Linker error] undefined reference to `vtable for Widget_Server_Load'
[Linker error] undefined reference to `vtable for Widget_Server_Load'
[Linker error] undefined reference to `vtable for Widget_Server_Load'
[Linker error] undefined reference to `vtable for Widget_Server_Load'
[Linker error] undefined reference to `vtable for Widget_Server_Load'
[Linker error] undefined reference to `vtable for Widget_Server_Load'
[Linker error] undefined reference to `vtable for Widget_Server_Load'
Woran liegt denn das????????
Include - bzw. Verzeichnispfade stimmen auch alle!!

Grüße
Gapa
Gestern war heute noch morgen!
ab2cd4
Beiträge: 9
Registriert: 17. Oktober 2008 19:30

Beitrag von ab2cd4 »

Der Fehler mit der vtable sollte verschwinden wenn du dein Projekt mit

Code: Alles auswählen

mingw32-make clean
mingw32-make
nochmal kompilierst, wenn nicht stimmt wahrscheinlich irgendwas mit deinem Compiler nicht.
Wenn du Qt mit dem Installer mit MinGW installiert hast, dann sollte im Startmenü ein Eintrag "Qt 4.x.x Command Prompt" erstellt worden sein, wenn du damit die Kommandozeile startest, dann sind die Umgebungsvariablen entsprechend eingestellt, dass es reicht qmake einfach ohne weitere Parameter aufzurufen.

Wenn du die selbstzuentpackende Version von Qt verwendest, dann kannst du diesen Code in einer bat speichern.

Code: Alles auswählen

@echo off
rem
rem This file is generated
rem

echo Setting up a MinGW/Qt only environment...
echo -- QTDIR set to pfad\zu\Qt
echo -- PATH set to pfad\zu\Qt\bin
echo -- Adding pfad\zu\MinGW to PATH
echo -- Adding %SystemRoot%\System32 to PATH
echo -- QMAKESPEC set to win32-g++

set QTDIR=pfad\zu\Qt
set PATH=pfad\zu\Qt\bin
set PATH=%PATH%;pfad\zu\MinGW
set PATH=%PATH%;%SystemRoot%\System32
set QMAKESPEC=win32-g++
:END
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Wie gesagt - man darf die Qt-Installation nicht einfach so herumschieben. Macht man es doch sollte man sich dies hier anschauen: http://doc.trolltech.com/4.4/qt-conf.html

Das vtable Problem kommt daher dass moc nicht ausgeführt wird - dein Header ist also nicht in HEADERS += im pro-File aufgeführt...
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Gapa
Beiträge: 63
Registriert: 4. Juli 2008 14:33
Kontaktdaten:

---

Beitrag von Gapa »

Hallo,

also ich habe Dev-Cpp sowie Qt4 jetzt nochmal neu installiert und nachgeschaut, ob Qt wieder diesen Ordner (iwmake/build_mingw_opensource/mkspeks) erstellt und habe festgestellt, dass dieser nie erstellt wird / wurde.
Jetzt frage ich mich ernsthaft, wieso dieser Compiler nach Ordnern sucht, welche nie existiert haben...

Mir würde es sehr weiterhelfen, wenn ich wüsste, wie man diese Einstellungen ändert.

Ferner habe ich bei einer Recherche etwas von fehlenden moc-Dateien gelesen, aber ich habe keine Ahnung, wie ich eine Moc-Datei erstelle bzw. wie ich sie mit in mein Projekt einbinde.


Ich wäre für hilfreiche Antworten auf diese Fragen wirklich sehr dankbar :D

Viele liebe Grüße
Gapa
Gestern war heute noch morgen!
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Probiere es bitte ersteinmal ohne DevCPP auf der Kommandozeile mit einem einfach pro-File. Examples, Demos und Tutorials dafür werden ja genug mitgeliefert...
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Gapa
Beiträge: 63
Registriert: 4. Juli 2008 14:33
Kontaktdaten:

Installation

Beitrag von Gapa »

Hallo,

ich werde jetzt noch ein letztes mal alles komplett deinstallieren (Dev-C++, Qt4, MinGW) und würde dann gerne alles richtig machen. Deshalb bräuchte ich vorher ein paar grundlegende Antworten:

1. G++ ist schon ein Kompiler, oder?
2. Was genau ist dann MinGW bzw. MinGW32 ??
3. Wenn ich eine IDE wie zum Beispiel Dev-Cpp verwende, werden automatisch ein G++ - Kompiler sowie ein Ordner mit dem name mingw32 erstellt.
Installiere ich daraufhin Qt4, so werde ich aufgefordert, den Pfad zum Compiler (G++) angzugeben, aber ich weiß nicht, welchen Pfad ich dann angeben soll...schließlich gibt es ja kein richtiges Programm mit dem Namen G++.exe, sondern lediglich einen Ordner mit vielen Unterordnern...Was soll ich da machen???
4. Wenn ich dann (gezwungenerweise) bei der Qt-Installation die Option "MinGW downloaden und installieren" klicke, habe ich diesen Krampf ja schon doppelt...obwohl ich nicht mal weiß, für was ich das brauche. Wie muss ich hier handeln??

Ich könnte mir gut vorstellen, dass der Fehler zu all dem bei Punkt 3 und Punkt 4 liegt.

Wenn mir hier jemand mal wirklich weiterhelfen würde, wäre ich sehr dankbar. Mal abwechslungsweise eine "nicht - einzeilige" Antwort wäre auch nicht schlecht! :wink:

Grüße
Gapa
Gestern war heute noch morgen!
ab2cd4
Beiträge: 9
Registriert: 17. Oktober 2008 19:30

Beitrag von ab2cd4 »

1. G++ ist der Compiler für C++. Allerdings besteht der aus mehreren Programmen, die von der g++ entsprechend aufgerufen werden.
Der gcc muss ebenfalls installiert sein, da g++ Teile von diesem benötigt.
2. MinGW ist der Port der/eines Teils GNU Compiler Collection (GCC) für Windows siehe auch http://www.mingw.org
3. Installier MinGW am besten wie hier beschrieben http://www.mingw.org/wiki/HOWTO_Install ... iler_Suite
Bei Qt gibst du als Pfad den Ordner an in den du MinGW installiert hast. z.B. "C:\MinGW" in diesem Ordner sind dann mehrere Unterverzeichnisse wie bin, lib, include.
Lad dir auch noch den GDB herunter und entpack ihm ins Installationsverzeichnis von MinGW, damit du einen Debugger hast.
4. Siehe 3. , du hast dann nur eine MinGW Installation womit eigentlich alles funktionieren sollte
Als Entwicklungsumgebung würde ich Eclipse empfehlen, da es hierfür von Trolltech ein Plugin gibt, das den Projektdateien die Header und Sourcefiles automatisch hinzufügt.
Gapa
Beiträge: 63
Registriert: 4. Juli 2008 14:33
Kontaktdaten:

Jup

Beitrag von Gapa »

Hallo noch einmal,

ich wollte mich nur noch mal bei allen Supportern hier bedanken...es hat nun endlich funktioniert!

Ich habe gleich darauf ein kleines Tutorial zur richtigen Installation von Dev-Cpp mit Qt4 geschrieben, denn wie sich herausstellte, gab / gibt es viele andere Programmierer denen es ging / geht wie mir.

Wer das Tut gebrauchen kann, --> PN :wink:

Grüße
Gapa
Gestern war heute noch morgen!
Antworten