Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1794 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [QT] thread

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[QT] thread

n°401758
kayl667
Posté le 20-05-2003 à 21:37:09  profilanswer
 

salut,
je souhaite utiliser les threads dans qt (sous linux)mais je n'y arrive pas... J'ai pris l'exemple qui est donné dans la doc mais je n'arrive pas à le compiler.

Code :
  1. #include <qthread.h>
  2. class MyThread : public QThread {
  3.     public:
  4.         virtual void run();
  5.     };
  6.     void MyThread::run()
  7.     {
  8.         for( int count = 0; count < 20; count++ ) {
  9.             sleep( 1 );
  10.             printf( "Ping!" );
  11.         }
  12.     }
  13.     int main()
  14.     {
  15.         MyThread a;
  16.         MyThread b;
  17.         a.start();
  18.         b.start();
  19.         a.wait();
  20.         b.wait();
  21.     }


Pour compiler je fais :
g++ -Wall -I /usr/local/qt/include -L /usr/local/qt/lib -lqt
Mais rien n'y fait, il comprend que class MyThread est un type...
SVP, aidez moi !
merci d'avance

mood
Publicité
Posté le 20-05-2003 à 21:37:09  profilanswer
 

n°401800
gloop
Posté le 20-05-2003 à 22:21:12  profilanswer
 

il faut que qt ait été compilé avec le support des threads. sinon ca marche pas.

n°401806
kayl667
Posté le 20-05-2003 à 22:28:57  profilanswer
 

je l'ai fait !
au fait, dans la comilation, j'utilise aussi -lpthread comme option.

n°401855
verdoux
And I'm still waiting
Posté le 20-05-2003 à 23:28:17  profilanswer
 

Si tu mets l'erreur renvoyée par le compilo, les gens qui veulent pas se faire chier à tester ton exemple pourront éventuellement t'aider.


Message édité par verdoux le 20-05-2003 à 23:28:37
n°401858
kadreg
profil: Utilisateur
Posté le 20-05-2003 à 23:31:54  profilanswer
 

Il faut linker avec -lqt-mt (mt pour multithread).  
 
Si tu utilise qmake, no'oublie pas de rajouter :  
 
CONFIG += thread
 
Dans ton fichier .pro


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
n°403417
kayl667
Posté le 21-05-2003 à 19:40:47  profilanswer
 

Citation :

Si tu utilise qmake, no'oublie pas de rajouter :  
 
CONFIG += thread
 
Dans ton fichier .pro

Non, je n'utilise pas qmake. Je débute dans qt donc j'ai voulu tout tapper moi même plutôt que de générer le code bêtement, histoire de comprendre comment ça fonctionne
 
 

Citation :

Si tu mets l'erreur renvoyée par le compilo, les gens qui veulent pas se faire chier à tester ton exemple pourront éventuellement t'aider.

Voilà le message que j'obtient après compilation :
 

Citation :

[kayl@Athlon1400 pc1]$ g++ -c -o MyThread.o MyThread.cpp -I /usr/local/qt/include -lqt-mt -pthread
MyThread.cpp:5: erreur d'analyse syntaxique avantle jeton « { »
MyThread.cpp:14: utilisation invalide d'un type indéfini «class MyThread»
MyThread.cpp:5: déclaration par l'avant (forward) de «class MyThread»
MyThread.cpp: Dans function « int main() »:
MyThread.cpp:23: aggrégat «MyThread a» a un type incomplet et ne peut être
   défini
MyThread.cpp:24: aggrégat «MyThread b» a un type incomplet et ne peut être
   défini

 
Merci de votre aide
PS: je met beaucoup de temps à répondre car au boulot, je n'ai pas accès au net... pas pratique du tout !

n°403468
kadreg
profil: Utilisateur
Posté le 21-05-2003 à 20:28:47  profilanswer
 

show me the code :o


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
n°403478
kayl667
Posté le 21-05-2003 à 20:53:11  profilanswer
 

Citation :

show me the code :o

 
Je l'ai mis plus haut !
 
Le voilà à nouveau :
 

Code :
  1. #include <qthread.h>
  2. #include <unistd.h>
  3. #include <stdio.h>
  4. class MyThread : public QThread {
  5.     public:
  6.         virtual void run();
  7.     };
  8.     void MyThread::run()
  9.     {
  10.         for( int count = 0; count < 20; count++ ) {
  11.             sleep( 1 );
  12.             printf( "Ping!" );
  13.         }
  14.     }
  15.     int main()
  16.     {
  17.         MyThread a;
  18.         MyThread b;
  19.         a.start();
  20.         b.start();
  21.         a.wait();
  22.         b.wait();
  23.     }

n°404972
kayl667
Posté le 22-05-2003 à 19:06:35  profilanswer
 

aucune idée d'où cela peut venir ?

n°405019
kadreg
profil: Utilisateur
Posté le 22-05-2003 à 20:50:25  profilanswer
 

kayl667 a écrit :

aucune idée d'où cela peut venir ?


 
De ta ligne de commande pour compiler. Utilise plutot :  
 

g++ -o MyThread MyThread.cpp -DQT_THREAD_SUPPORT -I$QTDIR/include -lqt-mt

 
 
(et je rapelle que qmake génère ce genre de conneries automatiquement, sauf cas tordu, il y a plus à ce faire chier de nos jour).
 
Dans l'exemple, si c'est qDebug qui est utilisé et pas printf, il y a une raison. Après l'essai, remet qDebug en n'oubliant pas le #include<qapplication.h>.


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
mood
Publicité
Posté le 22-05-2003 à 20:50:25  profilanswer
 

n°405027
kayl667
Posté le 22-05-2003 à 21:05:08  profilanswer
 

merci à toi kadreg, ça fonctionns !!


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [QT] thread

 

Sujets relatifs
[C : Thread] Comment faire passer un process en thread+2 autres quest[C/C++] Thread et accès à une variable par 2 threads en même temps...
[C/C++] Thread en standard (no API win32)[C/C++]killer un thread !
Probleme Thread Posix + C++[SWING + THREAD] Création d'une console - RESOLU
Accéder à un thread créé ??Exception in thread "main" java.lang.NoSuchMethodError: main
C++/Linux/Thread*****comment créer un générateur de nom de threadarreter un thread
Plus de sujets relatifs à : [QT] thread


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR