Hallo.
Ich habe ein Problem beim Erstellen einer qt3 Anwendung. Ich möchte aus dem QT-Tutorial das erste Beispiel kompilieren.
zu finden unter: file:///usr/share/qt3/doc/html/tutorial1-01.html
#include <qapplication.h>
#include <qpushbutton.h>
int main( int argc, char **argv )
{
QApplication a( argc, argv );
QPushButton hello( "Hello world!", 0 );
hello.resize( 100, 30 );
a.setMainWidget( &hello );
hello.show();
return a.exec();
}
Den Code habe ich in einem Editor eingegeben.
Dann in einer shell im selben Verzeichniss:
$ qmake -project
$ qmake qt3.pro
$ make
Dann kommen Seitenweise Fehlermeldungen....
Habe hier mal den Anfang rein kopiert....der direkt nach make kommt.
gcc -c -pipe -Wall -W -O2 -D_REENTRANT -DQT_NO_DEBUG -DQT_THREAD_SUPPORT -DQT_SHARED -DQT_TABLET_SUPPORT -I/usr/share/qt3/mkspecs/default -I. -I. -I/usr/include/qt3 -o hello_world.o hello_world.c
In file included from /usr/include/qt3/qwindowdefs.h:43,
from /usr/include/qt3/qwidget.h:42,
from /usr/include/qt3/qdesktopwidget.h:40,
from /usr/include/qt3/qapplication.h:42,
from hello_world.c:11:
/usr/include/qt3/qobjectdefs.h:152: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘QObject’
/usr/include/qt3/qobjectdefs.h:153: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘QMetaObject’
/usr/include/qt3/qobjectdefs.h:154: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘QSignal’
/usr/include/qt3/qobjectdefs.h:155: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘QConnection’
/usr/include/qt3/qobjectdefs.h:156: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘QEvent’
/usr/include/qt3/qobjectdefs.h:158: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘QConnectionList’
/usr/include/qt3/qobjectdefs.h:159: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘QConnectionListIt’
/usr/include/qt3/qobjectdefs.h:160: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘QSignalVec’
/usr/include/qt3/qobjectdefs.h:161: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘QObjectList’
/usr/include/qt3/qobjectdefs.h:162: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘QObjectListIt’
/usr/include/qt3/qobjectdefs.h:163: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘QMemberDict’
/usr/include/qt3/qobjectdefs.h:165: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘void’
/usr/include/qt3/qobjectdefs.h:169: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘void’
/usr/include/qt3/qobjectdefs.h:171: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘<’ token
In file included from /usr/include/qt3/qgarray.h:42,
from /usr/include/qt3/qmemarray.h:42,
from /usr/include/qt3/qcstring.h:43,
from /usr/include/qt3/qstring.h:42,
from /usr/include/qt3/qwindowdefs.h:44,
from /usr/include/qt3/qwidget.h:42,
from /usr/include/qt3/qdesktopwidget.h:40,
from /usr/include/qt3/qapplication.h:42,
from hello_world.c:11:
Am Ende der Fehlermeldung steht folgendes:
hello_world.c: In function ‘main’:
hello_world.c:20: error: ‘QApplication’ undeclared (first use in this function)
hello_world.c:20: error: (Each undeclared identifier is reported only once
hello_world.c:20: error: for each function it appears in.)
hello_world.c:20: error: expected ‘;’ before ‘a’
hello_world.c:22: error: ‘QPushButton’ undeclared (first use in this function)
hello_world.c:22: error: expected ‘;’ before ‘hello’
hello_world.c:23: error: ‘hello’ undeclared (first use in this function)
hello_world.c:25: error: ‘a’ undeclared (first use in this function)
hello_world.c:18: warning: unused parameter ‘argc’
hello_world.c:18: warning: unused parameter ‘argv’
make: *** [hello_world.o] Fehler 1
Ich habe den Eindruck, er hat die header-Dateien nicht gefunden.
Ich sollte eigentlich alles installiert haben, was man zum Übersetzen braucht.
Ein Aufruf von: $ COLUMNS=110 dpkg -l | grep qt
zeigt folgendes:
ii libavahi-qt3-1 0.6.16-3etch1 Avahi Qt3 integration library
ii libavahi-qt3-dev 0.6.16-3etch1 Development headers for the Avahi Qt3 integration library
ii libdbus-qt-1-1c2 0.62.git.20060814-2 simple interprocess messaging system (Qt-based shared libr
ii libpoppler0c2-qt 0.4.5-5.1 PDF rendering library (Qt-based shared library)
ii libqt3-headers 3.3.7-4 Qt3 header files
ii libqt3-i18n 3.3.7-4 i18n files for Qt3 library
ii libqt3-mt 3.3.7-4 Qt GUI Library (Threaded runtime version), Version 3
ii libqt3-mt-dev 3.3.7-4 Qt development files (Threaded)
ii libqthreads-12 1.6.8-6 QuickThreads library for Guile
ii pinentry-qt 0.7.2-3 Qt-based PIN or pass-phrase entry dialog for GnuPG
ii python-qt3 3.16-1.2 Qt3 bindings for Python
ii qt3-apps-dev 3.3.7-4 Qt3 Developer applications development files
ii qt3-assistant 3.3.7-4 The Qt3 assistant application
ii qt3-designer 3.3.7-4 Qt3 Designer
ii qt3-dev-tools 3.3.7-4 Qt3 development tools
ii qt3-doc 3.3.7-4 Qt3 API documentation
ii qt3-examples 3.3.7-4 Examples for Qt3
$
$ echo $PATH zeigt folgendes:
/usr/share/qt3/bin/:/usr/local/bin:/usr/bin:/bin:/usr/games
$ echo $QTDIR zeigt folgendes:
/usr/share/qt3
Kann mir da jemand helfen?
Ich habe auch versucht die folgenden Sachen unter .bash_profile im home-Verzeichnis einzutragen, hat aber leider auch nicht geholfen.
QTDIR=/usr/share/qt3
PATH=$QTDIR/bin/:$PATH
MANPATH=$QTDIR/doc/man:$MANPATH
LD_LIBRARY_PATH=$QTDIR/lib:$LD_LIBRARY_PATH
export QTDIR
export PATH
export MANPATH
export LD_LIBRARY_PATH
Habe keine Idee, warum es nicht geht.
Verwende debian etch stable.
[gelöst] qt3 - Probleme beim Ausführen von make.
[gelöst] qt3 - Probleme beim Ausführen von make.
Zuletzt geändert von merlin159 am 14.08.2007 18:51:59, insgesamt 1-mal geändert.
Habe selbst eine Notlösung gefunden , sie lautet:
$ g++ -o hello hello_world.c -Wall -I/usr/share/qt3/include -L/usr/share/qt3/lib -lqt-mt
Damit geht es erst mal und es entsteht eine ausführbare Datei: hello, die man so aufrufen kann:
./hello
Allerdings bleibt immer noch offen, warum es nicht mit:
1.) $ qmake -project
2.) $ qmake qt3.pro
3.) $ make
geht, denn so sollte man es ja eigentlich machen???? Vielleicht findet sich ja noch jemand, der hierauf eine Lösung weiß.
PS.: $ steht für: als user machen
$ g++ -o hello hello_world.c -Wall -I/usr/share/qt3/include -L/usr/share/qt3/lib -lqt-mt
Damit geht es erst mal und es entsteht eine ausführbare Datei: hello, die man so aufrufen kann:
./hello
Allerdings bleibt immer noch offen, warum es nicht mit:
1.) $ qmake -project
2.) $ qmake qt3.pro
3.) $ make
geht, denn so sollte man es ja eigentlich machen???? Vielleicht findet sich ja noch jemand, der hierauf eine Lösung weiß.
PS.: $ steht für: als user machen
Hallo, vielen Dank für den Tipp, habe ihn sofort ausprobiert.
Ich habe die Datei hello_world.c umbenannt nach hello_world.cpp, dann:
$ qmake -project
$ qmake qt3.pro
$ make
Ergenbis: seitenweise Fehlermeldungen. Auszug vom Ende der Fehlerausgabe:
info/hello_world.c: In function ‘main’:
info/hello_world.c:20: error: ‘QApplication’ undeclared (first use in this function)
info/hello_world.c:20: error: (Each undeclared identifier is reported only once
info/hello_world.c:20: error: for each function it appears in.)
Was mich hierbei verwundert hat, war, dass dorten hello_world.c stand. Endung: .c, obwohl ich die Datei ja nach .cpp umbenannt hatte????
Habe mir desshalb die Datei: qt3.pro im Text-Editor angeschaut und siehe da, dort steht unter anderem:
# Input
SOURCES += hello_world.cpp info/hello_world.c
Habe hier das info/hello_world.c gelöscht und die Datei wieder gespeichert, so dass dorten nur steht:
# Input
SOURCES += hello_world.cpp
Dann:
$ qmake qt3.pro
$ make
und siehe da:
g++ -c -pipe -Wall -W -O2 -D_REENTRANT -DQT_NO_DEBUG -DQT_THREAD_SUPPORT -DQT_SHARED -DQT_TABLET_SUPPORT -I/usr/share/qt3/mkspecs/linux-g++ -I. -I. -I/usr/include/qt3 -o hello_world.o hello_world.cpp
g++ -o qt3 hello_world.o -L/usr/share/qt3/lib -L/usr/X11R6/lib -lqt-mt -lXext -lX11 -lm -lpthread
Es geht und es wird die ausführbare Datei qt3 erzeugt .
Das bedeutet, dass Problem ist jetzt gelöst. Aufgrund der Art und Weise, wie ich es gelöst habe, müsste man jedoch sagen, dass es sich jetzt um einen bug handelt und man diesen melden sollte, damit andere user nicht auch stundenlang mit diesem Problem kämpfen müssen. Der bug wid produziert beim Aufruf von qmake -project. Hierbei wird ein Eintrag in der Datei qt3.pro erzeugt, der seitenweise Fehlermeldungen produziert.
Seht ihr dass auch so, bezüglich bug? Oder mache ich irgend etwas falsch, so dass es kein bug ist, sondern ein Bedienungsfehler oder ein Einstellungsfehler? An wen sollte man nun diesen bug melden, sofern es wirklich einer ist?
Ich habe die Datei hello_world.c umbenannt nach hello_world.cpp, dann:
$ qmake -project
$ qmake qt3.pro
$ make
Ergenbis: seitenweise Fehlermeldungen. Auszug vom Ende der Fehlerausgabe:
info/hello_world.c: In function ‘main’:
info/hello_world.c:20: error: ‘QApplication’ undeclared (first use in this function)
info/hello_world.c:20: error: (Each undeclared identifier is reported only once
info/hello_world.c:20: error: for each function it appears in.)
Was mich hierbei verwundert hat, war, dass dorten hello_world.c stand. Endung: .c, obwohl ich die Datei ja nach .cpp umbenannt hatte????
Habe mir desshalb die Datei: qt3.pro im Text-Editor angeschaut und siehe da, dort steht unter anderem:
# Input
SOURCES += hello_world.cpp info/hello_world.c
Habe hier das info/hello_world.c gelöscht und die Datei wieder gespeichert, so dass dorten nur steht:
# Input
SOURCES += hello_world.cpp
Dann:
$ qmake qt3.pro
$ make
und siehe da:
g++ -c -pipe -Wall -W -O2 -D_REENTRANT -DQT_NO_DEBUG -DQT_THREAD_SUPPORT -DQT_SHARED -DQT_TABLET_SUPPORT -I/usr/share/qt3/mkspecs/linux-g++ -I. -I. -I/usr/include/qt3 -o hello_world.o hello_world.cpp
g++ -o qt3 hello_world.o -L/usr/share/qt3/lib -L/usr/X11R6/lib -lqt-mt -lXext -lX11 -lm -lpthread
Es geht und es wird die ausführbare Datei qt3 erzeugt .
Das bedeutet, dass Problem ist jetzt gelöst. Aufgrund der Art und Weise, wie ich es gelöst habe, müsste man jedoch sagen, dass es sich jetzt um einen bug handelt und man diesen melden sollte, damit andere user nicht auch stundenlang mit diesem Problem kämpfen müssen. Der bug wid produziert beim Aufruf von qmake -project. Hierbei wird ein Eintrag in der Datei qt3.pro erzeugt, der seitenweise Fehlermeldungen produziert.
Seht ihr dass auch so, bezüglich bug? Oder mache ich irgend etwas falsch, so dass es kein bug ist, sondern ein Bedienungsfehler oder ein Einstellungsfehler? An wen sollte man nun diesen bug melden, sofern es wirklich einer ist?
Es ist kein Bug im eigentlichen Sinne.merlin159 hat geschrieben:Seht ihr dass auch so, bezüglich bug? Oder mache ich irgend etwas falsch, so dass es kein bug ist, sondern ein Bedienungsfehler oder ein Einstellungsfehler? An wen sollte man nun diesen bug melden, sofern es wirklich einer ist?
Zunächst einmal geht qmake davon aus, dass C++ Quelltext in Dateien mit z.B. der Endung cpp, cc usw. steht (C Quelltext in .c). Dies muss vom User eingehalten werden. Des Weiteren erzeugt qmake -project automatisch ein Makefile, in dem es rekursiv nach allen Quelltext-Dateien sucht. Hat man doppelte Dateien (z.T. auch noch mit falschen Endungen), so erzeugt qmake zwangsweise eine falsche *.pro Datei, was letzten Endes zu einem fehlerhaften Makefile führt.
Ich bevorzuge es daher die pro-Files von Hand zu erstellen bzw. auf jeden Fall das automatisch erzeugte File zu überprüfen. qmake ist nicht allwissend. Man muss schon bissle mitdenken.
btw. erzeugt qmake wirklich die Datei qt3.pro? Normalerweise richtet sich der Name nach dem Ordner. Andernfalls nutzt du eine qt3.pro die nicht durch qmake erzeugt wurde.
MfG GoKi
:wq
:wq
Hallo, ja der Ordner in dem mein Programm steht, heiß tatsächlich qt3.
Ich habe Aufgrund deiner Information einen neuen Ordner angelegt: test22, dort habe ich die Datei: hello_world.cpp rein kopiert und wieder die drei Schritte ausgeführt und es ging ohne Probleme...Also Entwarnung, kein Bug ! .
Ich hatte im Ordner qt3 einen Unterordner, in dem die Datei hello_world.c stand. Ich wuste nicht, dass qmake alle Ordner plus Unterordner durchsucht, dachte es arbeitet nur in dem Ordner, in dem es aufgerufen wird. Zu meiner Entschuldigung kann ich nur sagen, bin Anfänger, was das Thema Qt und auch debian angeht... Sorry.
Ok, damit kann man nun sagen, Thema vollständig gelöst. Vielen Dank für die Hilfe.
Ich habe Aufgrund deiner Information einen neuen Ordner angelegt: test22, dort habe ich die Datei: hello_world.cpp rein kopiert und wieder die drei Schritte ausgeführt und es ging ohne Probleme...Also Entwarnung, kein Bug ! .
Ich hatte im Ordner qt3 einen Unterordner, in dem die Datei hello_world.c stand. Ich wuste nicht, dass qmake alle Ordner plus Unterordner durchsucht, dachte es arbeitet nur in dem Ordner, in dem es aufgerufen wird. Zu meiner Entschuldigung kann ich nur sagen, bin Anfänger, was das Thema Qt und auch debian angeht... Sorry.
Ok, damit kann man nun sagen, Thema vollständig gelöst. Vielen Dank für die Hilfe.