[KDE C++] Newbee Question de compilation

Newbee Question de compilation [KDE C++] - C++ - Programmation

Marsh Posté le 23-04-2003 à 20:14:04    

N'hésitez pas à me corriger si je me contredit ou si je racontre des conneries mais j'ai un pb :
j'arrive pas à compiler un khello tout con.
le compilateur me trouve des erreurs dans les .h je comprends vraiment pas...
http://developer.kde.org/documenta [...] hello1.htm
j'ai repris excatement ce khello et ce que j'ai à la compilation c'est du style :

Code :
  1. /usr/include/kmainwindow.h:658: virtual outside class declaration
  2. /usr/include/kmainwindow.h:665: virtual outside class declaration
  3. /usr/include/kmainwindow.h:672: non-member function `bool settingsDirty()' cannot have `const' method qualifier
  4. /usr/include/kmainwindow.h:676: parse error before `)' token
  5. /usr/include/kmainwindow.h:681: non-member function `void saveWindowSize(KConfig*)' cannot have `const' method qualifier
  6. /usr/include/kmainwindow.h:692: parse error before `protected'
  7. /usr/include/kmainwindow.h:728: parse error before `private'
  8. /usr/include/kmainwindow.h:732: syntax error before `*' token
  9. /usr/include/kmainwindow.h:733: 'QPtrList' is used as a type, but is not defined as a type.
  10. /usr/include/kmainwindow.h:734: parse error before `protected'
  11. /usr/include/kmainwindow.h:739: parse error before `}' token
  12. khello.cc: In function `int main(int, char**)':
  13. khello.cc:7: `KApplication' undeclared (first use this function)
  14. khello.cc:7: parse error before `(' token
  15. khello.cc:8: `w' undeclared (first use this function)
  16. khello.cc:8: parse error before `(' token
  17. khello.cc:11: `a' undeclared (first use this function)

 
(c'est que la fin, j'ai pas tout mis :/ )
 
j'ai un mandrake 9.1 avec KDE 3.1
merci à ceux qui perdront un peu de temps pour m'aider.


Message édité par Guilz le 23-04-2003 à 20:50:41
Reply

Marsh Posté le 23-04-2003 à 20:14:04   

Reply

Marsh Posté le 23-04-2003 à 21:25:26    

guilz a écrit :

(c'est que la fin, j'ai pas tout mis :/ )


 
quitte à ne pas tout mettre, essaye plutôt de ne mettre que le début ;) voire juste le premier message d'erreur

Reply

Marsh Posté le 23-04-2003 à 22:54:32    

ok, merci de ta réponse, voici le début :
 

Code :
  1. g++ -c -IDEDIR/include -ITDIR/include -fno-rtti khello.cc
  2. In file included from /usr/include/kapp.h:5,
  3.                  from khello.cc:2:
  4. /usr/include/kapplication.h:39:26: qapplication.h: No such file or directory
  5. /usr/include/kapplication.h:40:21: qpixmap.h: No such file or directory
  6. In file included from /usr/include/kapplication.h:41,
  7.                  from /usr/include/kapp.h:5,
  8.                  from khello.cc:2:
  9. /usr/include/kinstance.h:30:21: qstring.h: No such file or directory
  10. In file included from /usr/include/kapplication.h:41,
  11.                  from /usr/include/kapp.h:5,
  12.                  from khello.cc:2:
  13. /usr/include/kinstance.h:51: parse error before `&' token
  14. /usr/include/kinstance.h:116: parse error before `)' token
  15. /usr/include/kinstance.h:136: parse error before `&' token
  16. /usr/include/kinstance.h:144: 'QCString' is used as a type, but is not defined as a type.
  17. In file included from /usr/include/kapp.h:5,
  18.                  from khello.cc:2:
  19. /usr/include/kapplication.h:91: parse error before `,' token
  20. /usr/include/kapplication.h:111: parse error before `bool'
  21. /usr/include/kapplication.h:134: parse error before `*' token

 
 :cry:


Message édité par Guilz le 23-04-2003 à 22:55:24
Reply

Marsh Posté le 24-04-2003 à 17:31:17    

[:dirakocha]

Reply

Marsh Posté le 24-04-2003 à 19:22:38    

tapes ca dans une console:
export QTDIR="/usr/lib/qt3/"
et toujours dans la MEME console, compile ton soft.
 
J'imagine que tu vas avoir une erreur un peu plus loin a cause de -lqt au lieu de lqt-mt sur la mandrake.
Si tu as le pb, en root dans le rep /usr/lib/qt3/lib tu crees un lien symbolique (en console, c'est ln -s) de libqt.so vers libqt-mt.so (qui est aussi un lien symbolique, mais comme ca si tu updates Qt y'aura pas de probleme), ya ptet une methode plus elegante, je sais pas (genre dans le .pro dire que tu veux qt-mt au lieu de qt).
 
conseils:
Je te conseil vivement d'etudier ca d'abord:
http://doc.trolltech.com/3.1/index.html
le tutorial1: http://doc.trolltech.com/3.1/tutorial.html
le tutorial2: http://doc.trolltech.com/3.1/tutorial2.html
 
Tout les trucs (doc, lib, headers...) sur Qt se trouve sur ton disque dur a l'emplacement: /usr/lib/qt3 (en gros la ou QTDIR doit pointer)
la doc html se trouve dans /usr/lib/qt3/doc
 
KDE en resume c'est une surcouche a Qt et la plupart des classes que tu utilises sont celles de Qt, donc etudie Qt surtout que les tutoriaux/exemples/documentation sont a jour et super bien foutus. Tu pourras toujours revenir par la suite au tutorial KDE pour voir les 2-3 specificites des classes KDE.
En general comme tu n'as pas besoin des trucs specifiques a KDE, limite toi a Qt (tout au moins au depart) et ainsi ton appli peut aussi se compiler sous Windows et MacOSX.
 
Pour les interfaces graphiques, le pure bon plan de la balle qui tue, c'est utilise QTDesigner pour generer un .ui (fichier XML) et ensuite utilise la classe QWidgetFactory http://doc.trolltech.com/3.1/qwidgetfactory.html (ya une doc la dessus dans la doc de QTDesigner)
 
explications:
KDE s'appuie sur la librairie graphique Qt
Les classes Qt commence par la lettre Q, or je vois:
 
qapplication.h: No such file or directory
 
les classes KDE font references aux classes Qt et n'arrivent pas a les trouver.
 
Il faut donc dire au compilo ou se trouve les classes Qt (les headers .h), ici ca devient un peu specifique a ta distrib, mais en regle generale il faut specifier QTDIR pour utiliser Qt.
 
Pourquoi dans la mandrake 9.1 c'est pas definie ? je sais pas (oui c'est con, sous Debian j'avais pas ce probleme). Trouver une solution elegante a ce probleme ? faut chercher sur les forums mandrake j'imagine, ca doit etre un probleme courant.


Message édité par tanguy le 24-04-2003 à 20:20:46
Reply

Marsh Posté le 25-04-2003 à 10:37:18    

:D Wahh ! merci beaucoup pour cette réponse !
j'ai réussit à compiler en faisant le export alors que la variable dans le makefile ne passe pas ... :hum:
 
J'ai pas eu le temps de chercher en profondeur le pb avec le make, mais celui ci fonctionne chez un pote avec la meme config linux que moi, mais pas chez moi ! Mais je te remercie pour ta réponse très complète tanguy ! :jap:
 
@+
Guilz
 

Reply

Sujets relatifs:

Leave a Replay

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