[QT for Linux] newbie inside... [RESOLU !!! :)]

newbie inside... [RESOLU !!! :)] [QT for Linux] - Programmation

Marsh Posté le 16-08-2002 à 22:19:48    

Bonjour, je veux réaliser une application en QT. Mais j'arrvie pas à compiler voilà le message d'erreur :
 

damien@Le-Zigoto:~/kslackports$ qmake -project && qmake && make
g++ -c -pipe -Wall -W -O2  -DQT_NO_DEBUG -I/usr/lib/qt-3.0.4/include -I/usr/lib/qt-3.0.4/mkspecs/default -o kslackports.o kslackports.cpp
g++  -o kslackports kslackports.o moc_kslackports.o  -Wl,-rpath,/usr/lib/qt-3.0.4/lib -L/usr/lib/qt-3.0.4/lib -L/usr/X11R6/lib -lqt -lXext -lX11 -lm
moc_kslackports.o: In function `MainWindow::tr(char const *, char const *)':
moc_kslackports.o(.text+0x33): undefined reference to `QApplication::translate(char const *, char const *, char const *, QApplication::Encoding) const'
moc_kslackports.o: In function `MainWindow::trUtf8(char const *, char const *)':
moc_kslackports.o(.text+0x7f): undefined reference to `QApplication::translate(char const *, char const *, char const *, QApplication::Encoding) const'
moc_kslackports.o: In function `MainWindow::staticMetaObject(void)':
moc_kslackports.o(.text+0xcb): undefined reference to `QMetaObject::new_metaobject(char const *, QMetaObject *, QMetaData const *, int, QMetaData const *, int, QMetaProperty const *, int, QMetaEnum const *, int, QClassInfo const *, int)'
moc_kslackports.o(.text+0xe5): undefined reference to `QMetaObjectCleanUp::setMetaObject(QMetaObject *&)'
moc_kslackports.o: In function `MainWindow::qt_cast(char const *)':
moc_kslackports.o(.text+0x13f): undefined reference to `QDialog::qt_cast(char const *)'
moc_kslackports.o: In function `MainWindow::qt_invoke(int, QUObject *)':
moc_kslackports.o(.text+0x163): undefined reference to `QDialog::qt_invoke(int, QUObject *)'
moc_kslackports.o: In function `MainWindow::qt_emit(int, QUObject *)':
moc_kslackports.o(.text+0x17f): undefined reference to `QDialog::qt_emit(int, QUObject *)'
moc_kslackports.o: In function `MainWindow::qt_property(int, int, QVariant *)':
moc_kslackports.o(.text+0x19b): undefined reference to `QDialog::qt_property(int, int, QVariant *)'
moc_kslackports.o: In function `__static_initialization_and_destruction_0':
moc_kslackports.o(.text+0x1c2): undefined reference to `QMetaObjectCleanUp::QMetaObjectCleanUp(void)'
moc_kslackports.o(.text+0x1d3): undefined reference to `QMetaObjectCleanUp::~QMetaObjectCleanUp(void)'
moc_kslackports.o(.gnu.linkonce.d.__vt_10MainWindow.12QPaintDevice+0xc): undefined reference to `QPaintDevice::setResolution(int)'
moc_kslackports.o(.gnu.linkonce.d.__vt_10MainWindow.12QPaintDevice+0x10): undefined reference to `QPaintDevice::resolution(void) const'
moc_kslackports.o(.gnu.linkonce.d.__vt_10MainWindow.12QPaintDevice+0x18): undefined reference to `QPaintDevice::x11RenderHandle(void) const'
moc_kslackports.o(.gnu.linkonce.d.__vt_10MainWindow+0x28): undefined reference to `QDialog::eventFilter(QObject *, QEvent *)'
moc_kslackports.o(.gnu.linkonce.d.__vt_10MainWindow+0x48): undefined reference to `QObject::customEvent(QCustomEvent *)'
moc_kslackports.o(.gnu.linkonce.d.__vt_10MainWindow+0x68): undefined reference to `QWidget::setBackgroundMode(Qt::BackgroundMode)'
moc_kslackports.o(.gnu.linkonce.d.__vt_10MainWindow+0x6c): undefined reference to `QWidget::setEraseColor(QColor const &)'
moc_kslackports.o(.gnu.linkonce.d.__vt_10MainWindow+0x70): undefined reference to `QWidget::setErasePixmap(QPixmap const &)'
moc_kslackports.o(.gnu.linkonce.d.__vt_10MainWindow+0x78): undefined reference to `QWidget::setPaletteBackgroundColor(QColor const &)'
moc_kslackports.o(.gnu.linkonce.d.__vt_10MainWindow+0x7c): undefined reference to `QWidget::setPaletteBackgroundPixmap(QPixmap const &)'
moc_kslackports.o(.gnu.linkonce.d.__vt_10MainWindow+0x154): undefined reference to `QDialog::contextMenuEvent(QContextMenuEvent *)'
moc_kslackports.o(.gnu.linkonce.d.__vt_10MainWindow+0x158): undefined reference to `QWidget::imStartEvent(QIMEvent *)'
moc_kslackports.o(.gnu.linkonce.d.__vt_10MainWindow+0x15c): undefined reference to `QWidget::imComposeEvent(QIMEvent *)'
moc_kslackports.o(.gnu.linkonce.d.__vt_10MainWindow+0x160): undefined reference to `QWidget::imEndEvent(QIMEvent *)'
moc_kslackports.o(.gnu.linkonce.d.__vt_10MainWindow+0x164): undefined reference to `QWidget::tabletEvent(QTabletEvent *)'
moc_kslackports.o(.gnu.linkonce.d.__vt_10MainWindow+0x198): undefined reference to `QWidget::windowActivationChange(bool)'
moc_kslackports.o(.gnu.linkonce.d.__vt_10MainWindow+0x19c): undefined reference to `QWidget::create(unsigned long, bool, bool)'
moc_kslackports.o(.gnu.linkonce.d.__vt_10MainWindow+0x1b4): undefined reference to `QWidget::setMicroFocusHint(int, int, int, int, bool, QFont *)'
collect2: ld returned 1 exit status
make: *** [kslackports] Erreur 1

 
Et voici le source du programme :
 

Code :
  1. #include <qapplication.h>
  2. #include <qpushbutton.h>
  3. int main( int argc, char **argv )
  4. {
  5. QApplication *a=new QApplication(argc,argv);
  6. QPushButton *quit=new QPushButton("Quitter", 0);
  7. a->setMainWidget(quit);
  8. quit->show();
  9. }

 
 
Merci pour votre aide...


Message édité par Profil supprimé le 16-08-2002 à 23:14:03
Reply

Marsh Posté le 16-08-2002 à 22:19:48   

Reply

Marsh Posté le 16-08-2002 à 22:46:14    

le sot zi a écrit a écrit :

 

Code :
  1. #include <qapplication.h>
  2. #include <qpushbutton.h>
  3. int main( int argc, char **argv )
  4. {
  5. QApplication *a=new QApplication(argc,argv);
  6. QPushButton *quit=new QPushButton("Quitter", 0);
  7. a->setMainWidget(quit);
  8. quit->show();
  9. a->exec();
  10. }

 




déjà dans ton source, ca n'affichera jamais rien car tu as oublié de faire a->exec();
 
sinon essaye plutot de compiler et d'executer un exemple sur le site de trolltech (comme ca t'es sur que le code est correct) :
http://doc.trolltech.com/3.0/tutorial1-01.html
 
En dehors de ça, normalement ton programme dois se compiler normalement sans erreur. ici c'est l'installation de Qt qui est marche pas : gcc n'arrive pas à linker ton programme avec la lib Qt mais les headers de Qt sont bien présents.
 
- donc comment as tu installé Qt ?
avec le tar.gz sur le site web de trolltech
ou avec le package qt-dev de ta distrib (c'est la meilleure méthode) ?
 
- tu as quel distrib ?
 
- tu compiles avec quel version de gcc ? (faire gcc -v pour savoir)
 
- avant ca fonctionnait ?

Reply

Marsh Posté le 16-08-2002 à 22:53:15    

Merci de me répondre  :jap:  
 
 

damien@Le-Zigoto:~/kslackports$ gcc -v
Reading specs from /usr/lib/gcc-lib/i386-slackware-linux/2.95.3/specs
gcc version 2.95.3 20010315 (release)
damien@Le-Zigoto:~/kslackports$

 
 
 
sur slackware 8.0 avec KDE 3.01, QT 3.0.4, pkgs officiels de KDE et QT pour slack. C'est la 1è fois ke je programme avec QT. J'ai essayé de mettre le exec (grossière erreur de ma part), mais rien à faire. Par contre, j'ai déjà essayé les tuts de trolltech. Ca marche, mais des fois j'ai quelques soucis, par ex avec le qhbox... Mais je n'ai pas leur façon de procéder, car je viens du java pour les interfaces graphiques, et j'ai du mal à m'habituer à leur façon de procéder...

Reply

Marsh Posté le 16-08-2002 à 23:13:40    

J'ai recompilé un QT-3.0.5 sur ma bécane, et la compil marche nickel... Merci pour votre aide :)

Reply

Marsh Posté le 16-08-2002 à 23:23:01    

le sot zi a écrit a écrit :

 
Ca marche, mais des fois j'ai quelques soucis, par ex avec le qhbox... Mais je n'ai pas leur façon de procéder, car je viens du java pour les interfaces graphiques, et j'ai du mal à m'habituer à leur façon de procéder...




comme lib graphique pour le C++ tu trouveras pas mieux ou plus simple que Qt, si tu viens de java c'est probablement le langage C++ lui-même qui te gène.
 
par contre je comprends pas pourquoi ca fonctionne à moitié :/
l'installation de la lib Qt chie clairement, ton programme je le compile et link sans aucun problème, t'aurais pas bidouillé ou fait des trucs crades en installant Qt, pris des packages non officiels, fait plusieurs installations différentes ?
 
j'ai malheureusement pas une slackware, mais normalement y'a aucun problème si l'on utilise les packages officiels de sa distrib.
 
au début j'ai pensé que tu utilisais gcc 3 alors que Qt était compilé avec gcc 2.95 mais apparemment c'est pas le cas.
 
essaye toujours de re-installer les packages Qt mais bon en général ca change pas grand chose ce genre de manip sous linux contrairement à windows.
 
essaye de voir sur les mailings lists de Slackware
ou fait une recherche sur le site web de trolltech, y'a beaucoup de docs et c'est très bien fait :
http://lists.trolltech.com/qt-interest/
 
fait aussi :
$ldd /usr/bin/qtconfig
et regarde la lib Qt qui est utilisé pour ce programme (livré avec Qt donc tu l'as forcément)
 
et essaye aussi ldd sur un programme que tu as compilé avec Qt et qui fonctionne pour voir.
 
regarde aussi la variable d'environnement QTDIR vers quel répertoire ca pointe
$env | grep QTDIR
 
tu trouveras peut être un truc annormal, je sais pas.
 
essaye aussi de faire en root
$ldconfig
 
mais bon y'a pas de raison que ca change quelque chose :(
 
post aussi sur OSA si tu y arrives toujours pas, y'a pleins de linuxiens la bas qui auront ptet rencontré le pb ou qui ont une slackware 8.0 comme toi et pourront essayer de compiler ton programme.

Reply

Marsh Posté le 16-08-2002 à 23:23:47    

le sot zi a écrit a écrit :

J'ai recompilé un QT-3.0.5 sur ma bécane, et la compil marche nickel... Merci pour votre aide :)




 
ro putain grilled :D

Reply

Marsh Posté le 16-08-2002 à 23:34:33    

tanguy a écrit a écrit :

 
 
ro putain grilled :D
 




pô grave ;) merci quand même... Et je ne viens pas seulement de java... Je viens de java juste pour les interfaces grafik... Sinon, je fé aussi du C, du C++, de l'asm et du php. Mais rarement des interfaces grafik, sauf pour l'iut... Text mode powa :)


Message édité par Profil supprimé le 16-08-2002 à 23:37:23
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed