Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 19/03/2006, à 10:37

lcampeur

[Résolu]Difficulté de 'make' avec pthread

Bonjour tout le monde, voici la difficulté que je rencontre : J'essai de faire un programme serveur, avec anjuta/glade, qui tout d'abord (je suis encore en appli test) lancer 2 threads : Un qui va gérer l'affichage des différentes informations sur l'IHM et l'autre qui va gérer le socket. Les thread sont synchronisé ensemble via un sémaphore. Le but étant évidement que l'affichage se mette à jour pendant qu'un client se connecte, et aussi avoir toujours la main sur la fenetre principale.
Niveau arborescense : server.cc (main) crée un objet sur window1 et le lance, ce qui fait apparaitre ma fenetre. Tout mon codage se situe dans cette derniere, en attendant de comprendre le fontionnement des thread et d'en faire des classe perso, pour avoir un codage plus propre... Mais ce n'est pour l'instant qu'un appli test.

Pour faire les threads, j'ai fait des recherches sur le net. Je suis tombé sur le fichier pthread.h, alors j'ai commencé à l'exploiter. Mias déjà une différence comparé à moi avec tous ces exemples : leurs programmes sont certes en C++, mais ne se lance qui via la console, et tout est codés dans leur main.cc, alors que moi, tout est dans window1.cc. Mais mes fonctions étant activé par un bouton, je ne pense pas que ce soit un probleme.

Le truc, c'est que les fonctions utilisées par les threads ne doivent pas être déclaré dans la classe window1, mais au dessus du début de la classe, toujours dans le fichier window1.hh, mais au dessus de la déclaration de la class 'class window1 {' si jamais je ne met pas les fonctions utilisées par les threads a cette endroit la, la fonction pthread_create() me retourne une erreur au niveau des type d'argument, conflit entre (void*)(window1:: )void*) au lieu de (void*)(*)(void*). Je déclare donc mes fonction en globale, mais la, évidemment, il me demande de déclarer aussi mes variables utilisées par cette fonctions en globale aussi. Je m'execute et la, quand je fait le make, il ne me fait pas d'erreur de compilation, par contre il me dit que toute mes variables sont en 'multiple déclaration' et il me dit aussi 'undefined reference' pour toutes les fonctions qui utilise le sémaphore.

J'ai a ce moment la, essayer de faire un copier/coller d'un exemple que j'avais trouvé, mais avec anjuta, il me fait les même erreurs. Je pense donc que ca ne vien pas de mon programme. J'ai pourtant les même include que sur les exemples...
Quand j'essai de compiler par la console, la je tape une commande que je comprend rien (je débute aussi sous linux) et il me dit que le fichier choisit n'existe pas
cc -D_REENTRANT -o thread1 test.cc -lpthread
Je laisse le codage en liens vers des .txt car je pense que ca deviendrai ilisible..

http://lcampeur.free.fr/prog/server02.cc.txt
http://lcampeur.free.fr/prog/window1.cc.txt
http://lcampeur.free.fr/prog/window1.hh.txt


Ma question est donc, que dois-je faire pour faire des threads, des sémaphores et surtout que ca se construise et s'execute.. et si possible, que ca marche wink
je vous remercie de votre attention smile

Dernière modification par lcampeur (Le 23/03/2006, à 08:43)

Hors ligne

#2 Le 19/03/2006, à 21:19

lcampeur

Re : [Résolu]Difficulté de 'make' avec pthread

up roll

Hors ligne

#3 Le 20/03/2006, à 08:48

viddak

Re : [Résolu]Difficulté de 'make' avec pthread

Salut!

Apparemment, il essai de compiler le fichier test.cc. As-tu ce fichier? car d'apres ce que j'ai compris tu n'as pas de fichier qui porte ce nom, non?

Hors ligne

#4 Le 20/03/2006, à 09:43

lcampeur

Re : [Résolu]Difficulté de 'make' avec pthread

Si lol, ce fichier test.cc est un copier coller d'un exemple trouver sur le net...
http://pficheux.free.fr/articles/lmf/threads/ ici en l'occurence

Dernière modification par lcampeur (Le 20/03/2006, à 09:45)

Hors ligne

#5 Le 22/03/2006, à 23:37

mitrendir

Re : [Résolu]Difficulté de 'make' avec pthread

C'est pas du C++, c'est du C.

mv test3.cc test3.c
cc -o thread test3.c -lpthread

çà marchera bien mieux wink

Hors ligne

#6 Le 23/03/2006, à 08:43

lcampeur

Re : [Résolu]Difficulté de 'make' avec pthread

J'ai fini par réussir... dans Anjuta, il fallait ajouter la librairie pthread au linker si je ne me trompe pas... Je suis au taf, donc je sais plus dire comme ca par ou je suis passé.. je complete plus tard smile

Hors ligne