[gelöst] QT 4.0.1 und Dev C++ unter Windows
[gelöst] QT 4.0.1 und Dev C++ unter Windows
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
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
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.
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:
QT + Dev C ++
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
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 ++
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-CPPThomas hat geschrieben: ... welches sich mit qmake auf Dos-Ebende problemlos erstellen lässt.
MfG Christian
'Funktioniert nicht' ist keine Fehlerbeschreibung
'Funktioniert nicht' ist keine Fehlerbeschreibung
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
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
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?
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:
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
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
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
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
Das ist interessant. Bei mir steht da ohne irgendwas zu ändern:klogg hat geschrieben:Diese Linzensgeschichte ist ein Bug in der OpenSource Version.
Code: Alles auswählen
# define QT_EDITION QT_EDITION_OPENSOURCEAndreas
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!
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!