Seite 1 von 1
Erste Schritte - bei make hapert's
Verfasst: 14. August 2010 17:33
von mausfunktion
Einen wunderschönen guten Tag,
Ich bin Qt-Neuling und habe mir deswegen (bzw. wollte mir) dieses Tutorial reinziehen:
http://doc.trolltech.com/4.3/tutorial-t1.html
Ich habe den Code abgespeichert unter main.cpp und nun folgendes in die Konsole (cmd.exe) eingetragen:
qmake -project
qmake
make
Genauso, wie es in dem Tutorial beschrieben ist. Die ersten beiden Befehle funktionieren auch noch wunderbar, aber bei make erhalte ich dann folgende Fehlermeldung:
Code: Alles auswählen
mingw32-make -f Makefile.Debug
mingw32-make[1]: Entering directory `D:/qt'
g++ -c -g -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_GUI_LIB -DQT_CORE_LIB -DQT_TH
READ_SUPPORT -DQT_NEEDS_QMAIN -I"..\Programm_Daten\Qt\include\QtCore" -I"..\Programm_Daten\Qt\include\QtGui" -I"..\Program
m_Daten\Qt\include" -I"." -I"..\Programm_Daten\Qt\include\ActiveQt" -I"debug" -I"..\Programm_Daten\Qt\mkspecs\win32-g++" -
o debug\main.o main.cpp
main.cpp: In function `int qMain(int, char**)':
main.cpp:8: error: `Qlabel' has not been declared
main.cpp:9: error: 'class QApplication' has no member named 'setMainWidget'
mingw32-make[1]: *** [debug/main.o] Error 1
mingw32-make[1]: Leaving directory `D:/qt'
mingw32-make: *** [debug] Error 2
Was mache ich falsch?
Schönes Grüße und schon einmal vielen Dank!
PS: Benutze MinGW als Compiler, der Befehl make verweist bereits auf mingw32-make
Verfasst: 14. August 2010 17:43
von franzf
Dann hast du aber das Bespiel modifiziert. Statt dem QPushButton erstellst du wohl ein QLabel. Um das aber verwenden zu können, muss der Typ bekannt sein, in dem Fall brauchts dafür einen include:
Hast du denn vor Qt schon mit C++ programmiert?
Verfasst: 14. August 2010 18:35
von solarix
Und mit der passenden Include gibt's dann auch noch kein "Qlabel" sondern ein "QLabel" ...

Verfasst: 14. August 2010 19:07
von mausfunktion
Mit C++ habe ich schon vorher programmiert.
Nur habe ich die falsche Fehlermeldung gepostet
*Verwirrt sei*
Also noch einmal von vorne:
Ich habe den im Tutorial beschriebenen Code kompilieren lassen wollen:
Code: Alles auswählen
#include <QApplication>
#include <QPushButton>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QPushButton hello("Hello world!");
hello.resize(100, 30);
hello.show();
return app.exec();
}
und dabei folgende (nun noch einmal überprüfte) Fehlermeldung bekommen:
Code: Alles auswählen
mingw32-make -f Makefile.Debug
mingw32-make[1]: Entering directory `D:/qt'
g++ -c -g -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_GUI_LIB -DQT_CORE_LIB -DQT_TH
READ_SUPPORT -DQT_NEEDS_QMAIN -I"..\Programm_Daten\Qt\include\QtCore" -I"..\Programm_Daten\Qt\include\QtGui" -I"..\Program
m_Daten\Qt\include" -I"." -I"..\Programm_Daten\Qt\include\ActiveQt" -I"debug" -I"..\Programm_Daten\Qt\mkspecs\win32-g++" -
o debug\main.o main.cpp
g++ -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-reloc -mthreads -Wl -Wl,-subsystem,windows -o
debug\qt.exe debug/main.o -L"d:\Programm_Daten\Qt\lib" -lmingw32 -lqtmaind -lQtGuid4 -lQtCored4
d:\Programm_Daten\Qt\lib/libqtmaind.a(qtmain_win.o): In function `WinMain@16':
C:\iwmake\build_mingw_opensource\src\winmain/qtmain_win.cpp:93: undefined reference to `_Unwind_Resume'
C:\iwmake\build_mingw_opensource\src\winmain/qtmain_win.cpp:135: undefined reference to `_Unwind_Resume'
d:\Programm_Daten\Qt\lib/libqtmaind.a(qtmain_win.o):C:\iwmake\build_mingw_opensource\src\winmain/../../include/QtCore/../.
./src/corelib/tools/qvector.h:482: undefined reference to `_Unwind_Resume'
d:\Programm_Daten\Qt\lib/libqtmaind.a(qtmain_win.o):C:\iwmake\build_mingw_opensource\src\winmain/../../include/QtCore/../.
./src/corelib/tools/qvector.h:483: undefined reference to `_Unwind_Resume'
d:\Programm_Daten\Qt\lib/libqtmaind.a(qtmain_win.o):qtmain_win.cpp:(.eh_frame+0x12): undefined reference to `__gxx_persona
lity_v0'
collect2: ld returned 1 exit status
mingw32-make[1]: *** [debug\qt.exe] Error 1
mingw32-make[1]: Leaving directory `D:/qt'
mingw32-make: *** [debug] Error 2
Ich hoffe nun hab ich alles beisammen
Schöne Grüße
Verfasst: 14. August 2010 19:26
von naraesk
Keine Leerzeichen vor #include.

Verfasst: 14. August 2010 19:37
von mausfunktion
Liegt daran, dass ich den Code diesmal vom Tutorial kopiert habe und nicht aus dem Editor. Dort sind selbstverstänldich keine Leerzeichen vorhanden.
Code: Alles auswählen
#include <QApplication>
#include <QPushButton>
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
QPushButton hello("Hello world!");
hello.resize(100, 30);
hello.show();
return app.exec();
}
So kommts aus dem Editor
Schöne Grüße
Verfasst: 14. August 2010 19:54
von Christian81
Du verwendest einen anderen gcc als den der bei Qt mitgelifert worden ist bzw. mit dem Qt compiliert worden ist.
Verfasst: 14. August 2010 20:22
von mausfunktion
Vielen, vielen Dank!!
Ich habe mir die MinGW-Version runtergeladen, die auf der Nokia-QT-Seite angegeben war und es hat alles wunderbar funktioniert!
Wobei sich da eine Frage anschließt:
Aktuell ist die MinGW-Version 5.1.6 draußen und QT verwendet noch 4.4.
Wäre es da nicht ratsam seitens Nokias, das mal zu aktualisieren, oder sind die Versionsunterschiede so minimal?
Noch einmal vielen Dank und schöne Grüße
Verfasst: 14. August 2010 21:12
von Christian81
MinGW != gcc Compiler
Der aktuelle von MinGW verfügbare gcc compiler ist 4.5. Also nicht so viel Unterschied.
Verfasst: 14. August 2010 21:21
von mausfunktion
Achso
Bei genauerem Hinsehen fällt auch mir auf, dass die Datei MinGW_gcc_440.exe lautete und nicht Mingw_440.exe
Schande komme über mich!
Naja, vielen Dank nochmal für die Hilfe und damit wären dann alle Fragen restlos geklärt
Schöne Grüße