un probleme avec qt

un probleme avec qt - C++ - Programmation

Marsh Posté le 25-04-2003 à 19:30:01    

salut,  
 
j'ai besoin d'une aide precieuse...pour la realisation de mon mémoire en informatique! En effet, je travaille sous Mandrake 9.0, les librairies qt sont deja installees et pourtant je n'arrive pas à compiler mon premier petit programme test.  
Les compilations essayées:  
 
g++ -o ex1 ex1.cpp -lqt  
g++ -I /usr/lib/qt3/include/ -o ex1 ex1.cpp [-lqt]  
 
Les erreurs signalées:  
 
ex1.cpp:6:19: qapp.h: No such file or directory  
ex1.cpp:7:22: qpushbt.h: No such file or directory  
ex1.cpp: In function `int main(int, char**)':  
ex1.cpp:13: `QApplication' undeclared (first use this function)  
ex1.cpp:13: (Each undeclared identifier is reported only once for each function it appears in.)  
ex1.cpp:13: parse error before `(' token  
ex1.cpp:18: `QPushButton' undeclared (first use this function)  
ex1.cpp:19: `bouton' undeclared (first use this function)  
 
Merci d'avance à celui qui me sauvera de la stagnation, mon mémoire ne pouvant plus avancer à cause de ce problème technique!  
 
 
Le 'programmito', au passage:  
 
#include < qapp.h>  
#include < qpushbt.h>  
 
int main( int argc, char **argv ) {  
QApplication a( argc, argv );  
 
QPushButton bouton( "Coucou !!!" );  
bouton.resize( 100, 30 );  
 
a.setMainWidget( &bouton );  
bouton.show();  
return a.exec();  
} [quote]


Message édité par boco le 25-04-2003 à 20:19:48
Reply

Marsh Posté le 25-04-2003 à 19:30:01   

Reply

Marsh Posté le 25-04-2003 à 19:32:49    

apparemment il manque une référence vers les librairies puisque les headers ne sont pas trouvés (dixit le premier message d'erreur du compilateur).
 
il y a un topic très récent qui traite pratiquement de la même chose.
 
Au fait: mauvaise cat -> C/C++
 
:hello:


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Marsh Posté le 25-04-2003 à 19:37:43    

voilà c'était ici: http://forum.hardware.fr/forum2.php3?post=35654&cat=10
 
regarde si ça répond à ta question ;)


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Marsh Posté le 26-04-2003 à 10:31:07    

les headers que tu mets sont ceux de Qt 1.x, depuis la version 2, il faut utiliser qapplication.h et qpushbutton.h
Normalement qapp.h devrait exister pour la compatibilité, mais je sais pas comment mandrake a fait ca  :)  

Reply

Marsh Posté le 27-04-2003 à 16:44:32    

drasche a écrit :

voilà c'était ici: http://forum.hardware.fr/forum2.php3?post=35654&cat=10
 
regarde si ça répond à ta question ;)


 
 
ca repond a ma question... Merci!

Reply

Marsh Posté le 27-04-2003 à 18:22:16    

Sauf que maintenant!
 
[boco@localhost Qt]$ g++ -I/usr/lib/qt3/include -o ex1 ex1.cpp -lqt
ex1.cpp: In function `int main(int, char**)':
ex1.cpp:13: no matching function for call to `QPushButton::QPushButton(const char[11])'
/usr/lib/qt3/include/qpushbutton.h:134: candidates are: QPushButton::QPushButton(const QPushButton&)
/usr/lib/qt3/include/qpushbutton.h:66:                 QPushButton::QPushButton(const QIconSet&, const QString&, QWidget*, const char* = 0)
/usr/lib/qt3/include/qpushbutton.h:65:                 QPushButton::QPushButton(const QString&, QWidget*, const char* = 0)
/usr/lib/qt3/include/qpushbutton.h:64:                 QPushButton::QPushButton(QWidget*, const char* = 0)
ex1.cpp:16: parse error before `.' token
 
J'ai a peine touché mon code (j'ai arrangé QPushButton) et puis:
 
[boco@localhost Qt]$ g++ -I/usr/lib/qt3/include -o ex1 ex1.cpp -lqt
/usr//bin/ld: cannot find -lqt
collect2: ld returned 1 exit status
[boco@localhost Qt]$ export QTDIR="/usr/lib/qt3/"
[boco@localhost Qt]$ g++ -I/usr/lib/qt3/include -o ex1 ex1.cpp -lqt
/usr//bin/ld: cannot find -lqt
collect2: ld returned 1 exit status*/
 
Faudra quand meme m'expliquer!  
A bon entendeur. Et merci d'avance  

Reply

Marsh Posté le 27-04-2003 à 18:53:17    

pour le 1er probleme, faut préciser le parent de QPushButton. regarde la doc
pour le 2eme probleme précise le chemin pour la librairie au compilateur

Reply

Marsh Posté le 27-04-2003 à 20:07:48    

gloop a écrit :

pour le 1er probleme, faut préciser le parent de QPushButton. regarde la doc
pour le 2eme probleme précise le chemin pour la librairie au compilateur
 


 
non, le premier probleme est simplement lié a une mauvaise  utilisation du constructeur (suffisait de mettre 0 comme dernier argument...).  
Quant au second, la, c'est plus delicat. Comme tu peux voir dans la partie de shell que je fournis, il y a un export d'effectué. Devrait connaitre le chemin du coup, non? Puis le probleme est apparu tout d'un coup.Comme tu peux voir la premiere compilation avait fonctionné... Je sais pas.......

Reply

Marsh Posté le 27-04-2003 à 21:26:09    

boco a écrit :


 
non, le premier probleme est simplement lié a une mauvaise  utilisation du constructeur (suffisait de mettre 0 comme dernier argument...).  
Quant au second, la, c'est plus delicat. Comme tu peux voir dans la partie de shell que je fournis, il y a un export d'effectué. Devrait connaitre le chemin du coup, non? Puis le probleme est apparu tout d'un coup.Comme tu peux voir la premiere compilation avait fonctionné... Je sais pas.......


pour le 1er prob, c'est bien ce que je te dis, c'est le parent. quand tu mets 0, tu utilises le constructeur avec 2 paramètres: le parent et le nom. là, tu dis qu'il y a pas de parent.
pour le 2é probléme, la variable QTDIR n'a rien n'a voir, tu précises soit avec LD_LIBRARY_PATH, soit dans le fichier /etc/ld.so.conf

Reply

Marsh Posté le 27-04-2003 à 23:13:31    

Je peux te demander ce qu'est que LD_LIBRARY_PATH  et le fichier /etc/ld.so.conf? Et comment je precise?
Merci pour ta réponse.
   :??:

Reply

Marsh Posté le 27-04-2003 à 23:13:31   

Reply

Marsh Posté le 28-04-2003 à 07:47:59    

LD_LIBRARY_PATH est une variable d'environnement.
dans les 2 cas ca permet de dire au linker où chercher les librairies. (man ldd)
sinon, tu peux utiliser le paramètre -L du g++ pour lui indiquer où trouver la bibliotheque.
Par contre, ca se peut que libqt.so n'existe pas, mais qu'il n'y ait que libqt-mt.so (version multithreadée de Qt). dans ce cas, faut pas que t'utilises -lqt mais -lqt-mt

Reply

Sujets relatifs:

Leave a Replay

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