[gelöst] QT 4.0.1 und Dev C++ unter Windows

Verschiedenes zu Qt
Antworten
Thomas
Beiträge: 45
Registriert: 9. September 2005 16:26

[gelöst] QT 4.0.1 und Dev C++ unter Windows

Beitrag von Thomas »

Hallo,

ich habe versucht QT ind Dev C++ einzubinden und habe dafür sowohl ein Template zur Erstellung von Qt-Projekten als auch eine ausführliche Anleitung benutzt. Leider endeten beide Wege in der folgenden Fehlermeldung:

Compiler: Default compiler
Building Makefile: "H:\Makefile.win"
Führt make... aus
make.exe -f "H:\Makefile.win" all
g++.exe imageviewer/imageviewer.o imageviewer/main.o -o "Projekt2.exe" -L"C:/OpenSource/Dev-Cpp/lib" -L"C:/Qt/4.0.1/lib" -L"C:/Qt/4.0.1/lib" -mwindows C:/Qt/4.0.1/lib/libQt3Support4.a C:/Qt/4.0.1/lib/libQtAssistantClient.a C:/Qt/4.0.1/lib/libQtCore4.a C:/Qt/4.0.1/lib/libQtDesigner4.a C:/Qt/4.0.1/lib/libQtDesignerComponents4.a C:/Qt/4.0.1/lib/libQtGui4.a C:/Qt/4.0.1/lib/libqtmain.a C:/Qt/4.0.1/lib/libQtNetwork4.a C:/Qt/4.0.1/lib/libQtOpenGL4.a C:/Qt/4.0.1/lib/libQtSql4.a C:/Qt/4.0.1/lib/libQtXml4.a

imageviewer/imageviewer.o(.text+0x173):imageviewer.cpp: undefined reference to `vtable for ImageViewer'
imageviewer/imageviewer.o(.text+0x17f):imageviewer.cpp: undefined reference to `vtable for ImageViewer'
imageviewer/imageviewer.o(.text+0x4e1):imageviewer.cpp: undefined reference to `vtable for ImageViewer'

imageviewer/imageviewer.o(.text+0x4ed):imageviewer.cpp: undefined reference to `vtable for ImageViewer'
imageviewer/imageviewer.o(.text$_ZN11ImageViewer2trEPKcS1_[ImageViewer::tr(char const*, char const*)]+0x1c):imageviewer.cpp: undefined reference to `ImageViewer::staticMetaObject'
imageviewer/main.o(.text$_ZN11ImageViewerD1Ev[ImageViewer::~ImageViewer()]+0x3a):main.cpp: undefined reference to `vtable for ImageViewer'
imageviewer/main.o(.text$_ZN11ImageViewerD1Ev[ImageViewer::~ImageViewer()]+0x46):main.cpp: undefined reference to `vtable for ImageViewer'
collect2: ld returned 1 exit status

make.exe: *** [Projekt2.exe] Error 1

Ausführung beendet




Kann mir bitte jemand weiter helfen, nachdem ich nun nicht mehr weis, was ich machen soll. Irgendwie scheint ein Problem mit mit "moc" vorzuliegen, da ich einfache Anwendungen ohne Signal und Slot-Verwendung kompelieren kann.

Thomas
methusalem
Beiträge: 186
Registriert: 11. August 2005 08:21

Re: QT 4.0.1 und Dev C++ unter Windows

Beitrag von methusalem »

Nabend,

ich kann dir zwar nicht bei deinem Problem weiterhelfen, aber vielleicht kannst du ja mal die Quelle für deine Anleitung posten. Ich hab auch mal eine gefunden. Aber leider lief damit nix.
Martin
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Dazu gibts aber genug Treffer bei google - du hast die moc-Stage vergessen oder Q_OBJECT nicht an den betreffenden Stellen im Header gesetzt. Wo genau kann man erst sehen wenn du den source postest.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Thomas
Beiträge: 45
Registriert: 9. September 2005 16:26

QT + Dev C ++

Beitrag von Thomas »

Hallo,

bei dem Code, den ich zu kompelieren versucht habe, handelt es sich um ein Beispiel aus der QT Dokumentation, welches sich mit qmake auf Dos-Ebende problemlos erstellen lässt.

Die Header-Datei sieht folgendermaßen aus:

#ifndef IMAGEVIEWER_H
#define IMAGEVIEWER_H

#include <QMainWindow>
#include <QPrinter>

class QAction;
class QLabel;
class QMenu;
class QScrollArea;
class QScrollBar;

class ImageViewer : public QMainWindow
{
Q_OBJECT

public:
ImageViewer();

private slots:
void open();
void print();
void zoomIn();
void zoomOut();
void normalSize();
void fitToWindow();
void about();

private:
void createActions();
void createMenus();
void updateActions();
void scaleImage(double factor);
void adjustScrollBar(QScrollBar *scrollBar, double factor);

QLabel *imageLabel;
QScrollArea *scrollArea;
double scaleFactor;

QPrinter printer;

QAction *openAct;
QAction *printAct;
QAction *exitAct;
QAction *zoomInAct;
QAction *zoomOutAct;
QAction *normalSizeAct;
QAction *fitToWindowAct;
QAction *aboutAct;
QAction *aboutQtAct;

QMenu *fileMenu;
QMenu *viewMenu;
QMenu *helpMenu;
};

#endif


Die Installationsanleitung ist unter http://www.hoppelkoppel.de/docs/InstallationQt.pdf zu finden. Das Template gibt es unter http://evilissimo-softdev.de/downloads.html.

Gruß

Thomas
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: QT + Dev C ++

Beitrag von Christian81 »

Thomas hat geschrieben: ... welches sich mit qmake auf Dos-Ebende problemlos erstellen lässt.
Weil qmake die Header ordentlich mit moc parst und dann mit linkt. Wie man allerdings Dev-CPP dazu bringt ein korrektes Makefile zu erstellen das diese Abhänigkeiten mit drin hat, weiss ich nicht. Dev-Cpp dürfte nicht ein Makefile erstellen sondern müsste qmake aufrufen. Evtl. geht es auch anders, habe aber keine Ahnung von Dev-CPP
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
kowi1134
Beiträge: 120
Registriert: 1. Mai 2005 17:48
Wohnort: Arnsberg

Beitrag von kowi1134 »

Also ich habe es mit QT4.0.0 auch völlig ohne Dev-C++ Templates etc. hinbekommen!

Am Besten ist, Du installierst nur die executable Version von Dev-C++. Dazu musst Du natürlich MinGW selbst installieren, sofern das bei der Installation von Qt noch nicht passiert ist. Jetzt solltest Du noch Deine Umgebungsvariable PATH um das bin Verzeichnis Deiner MinGW Installation erweitern, damit Dev-C++ mingw32-make.exe finden kann.

Jetzt startest Du den Dev-C++, erstellst ein neues Projekt und stellst unter Projekt->Projekt Optionen->Make Datei ein, dass Du eine eigene Makefile nutzen möchtest (Häkchen setzen). Der Knackpunkt dabei ist, dass Du zum Erstellen dieser Makefile einmal über die Konsole qmake aufrufen musst. In Dev-C++ wählst Du dann die Datei Makefile.Release aus.

Klar, hierbei geht ein bischen der Kompfort einer IDE verloren, aber dafür kannst Du mal eben mit einem Klick auf <F9> alles kompilieren und ausführen lassen. Die Sache hat nur den einen Haken, dass Du manuell Dateien in Deine qmake Projektdatei hinzufügen musst und und dann einmal qmake ausführen muss. Wenn Dein Projekt bereits alle Dateien enthält, die es benötigt, dann kann man aber wunderbar mit Dev-C++ arbeiten.

NICHT VERGESSEN: Nur die executable Version von Dev-C++ funktioniert.

Ciao
Thomas
Beiträge: 45
Registriert: 9. September 2005 16:26

Beitrag von Thomas »

Hallo,

danke für die Beschreibung. Nun funktioniert das Zusammenspiel QT und Dev C++. Danke für die Hilfe

Thomas
jaipur
Beiträge: 9
Registriert: 4. September 2005 19:22

Beitrag von jaipur »

hallo zusammen,

also ich muss leider zugeben das ich immer noch an den kleinsten hindernissen scheitere...


"Jetzt solltest Du noch Deine Umgebungsvariable PATH um das bin Verzeichnis Deiner MinGW Installation erweitern, damit Dev-C++ mingw32-make.exe finden kann."

> wo finde ich die PATH variable und wie kann ich diese ändern?


und was ist hiermit http://www.hoppelkoppel.de/docs/InstallationQt.pdf ?
kann ich diese anleitung komplett vergessen oder muss ich diese einstellungen beachten und auch vornehmen?
FlorianBecker
Beiträge: 1213
Registriert: 2. Dezember 2004 10:54
Kontaktdaten:

Beitrag von FlorianBecker »

Den PATH kannst du unter Systemsteuerung -> System -> Lasche (Erweitert) -> Umgebungsvariablen anpassen.

Der Wert PATH wird dort schon vorhanden sein, dann einfach "Bearbeiten" und nach einem Strichpunkt den neuen Pfad anhängen.
Thomas
Beiträge: 45
Registriert: 9. September 2005 16:26

Beitrag von Thomas »

...die Anleitung enthält meiner Meinung nach Fehler bzw. hat bei mir nicht funktioniert. Ich habe sie im zweiten erfolgreichen Versuch nicht mehr benutzt.

Thomas
jaipur
Beiträge: 9
Registriert: 4. September 2005 19:22

Beitrag von jaipur »

also wenn ich die zweite anleitung (http://www.hoppelkoppel.de/docs/InstallationQt.pdf) komplett weglasse,
bekomme ich bei dem ersten tutorial (http://doc.trolltech.com/3.3/tutorial1-01.html) mir eine völlig selbstverständliche fehlermeldung:
nicht ein qt element konnte gefunden werden...

irgendwo muss ich doch eintragen wo die qt header files und libs liegen, oder nicht?


EDIT:
1. ich hatte das makefile.release nicht eingebunden!

aber nun bekomme ich unter DevC++ und unter make (also in der konsole) insgesamt 43 fehlermeldungen alle vom gleichen typ mit dem zusatz: 'QtValidLicenseForCoreModule' does not name a type
klogg
Beiträge: 129
Registriert: 5. September 2005 17:00
Wohnort: Hann. Münden

Beitrag von klogg »

Diese Linzensgeschichte ist ein Bug in der OpenSource Version.
Dazu gibt es auch schon ca. tausend threads hier...

Im Verzeichnis C:\Qt\4.0.1\src\corelib\global
(oder entsprechend)
befindet sich die Datei qconfig.h
Dort steht unter anderem dieser Block

// Qt Edition
#ifndef QT_EDITION
# define QT_EDITION QT_EDITION_
#endif

Muss aber heißen

// Qt Edition
#ifndef QT_EDITION
# define QT_EDITION QT_EDITION_DESKTOP
#endif

..einfach von Hand ändern.

HENNING
AHUser
Beiträge: 27
Registriert: 29. Juni 2005 17:45

Beitrag von AHUser »

klogg hat geschrieben:Diese Linzensgeschichte ist ein Bug in der OpenSource Version.
Das ist interessant. Bei mir steht da ohne irgendwas zu ändern:

Code: Alles auswählen

#  define QT_EDITION QT_EDITION_OPENSOURCE
Ich habe aber die Version ohne MingW heruntergeladen.
Andreas
jaipur
Beiträge: 9
Registriert: 4. September 2005 19:22

Beitrag von jaipur »

hm,

ich habe mal ein bissel probiert und ein paar knöpfe gedrückt!
unter anderem auch im startmenü "Qt 4.0.1 (Build Debug Libraries)"
und man siehe und staune, danach ging wirklich alles, hat zwar ca.
eine halbe gedauert, aber es funktiert jetzt unter der konsole und auch
mit dev c++.

darauf hin habe ich alles deinstalliert und noch ein mal
"Qt 4.0.1 (Build Debug Libraries)" ausgeführt und dann ging es wieder.

ich vermute mal nach der installation müsste noch mindestens ein schalter
gedrückt werden, denn jedesmal diese 30 minuten zu warten ist echt übel!

aber wie gesagt, nach dem "Qt 4.0.1 (Build Debug Libraries)" seine arbeit
erledigt hat, ist alles ok.

edit: qconfig.h von hand geändert, alles ok!
Antworten