Bonjour,
Je cherche à donner en paramètre à la fonction pthread_create une méthode de classe. J'ai lu la FAQ et j'ai repris le code proposé, seulement j'ai des erreurs de compilation ... voici le code :
ModemGPRS.h
ModemGPRS.cpp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 #include<pthread.h> class ModemGPRS{ private: pthread_t *m_thread; pthread_mutex_t *m_mutex; static void *staticFunToGestionModem(void *arg); public: /* a part constructeur, destructeur et autres */ void *gestionModem(); void run(pthread_mutex_t *mutex); }
Et à la compilation, j'ai un beau :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 void *ModemGPRS::gestionModem() { /* blabla */ } void *ModemGPRS::staticFunToGestionModem(void *arg) { ModemGPRS *mod = reinterpret_cast<ModemGPRS*>(arg); return mod->gestionModem(); } void ModemGPRS::run(pthread_mutex_t *mutex) { m_mutex = mutex; pthread_create(m_thread, NULL, staticFunToGestionModem, NULL); }
build/Debug/GNU-Linux-x86/ModemGPRS.o: In function ModemGPRS::run(pthread_mutex_t*)':
/home/Documents/routeur/ModemGPRS.cpp:339: undefined reference to `pthread_create'
collect2: ld returned 1 exit status
make[2]: *** [dist/Debug/GNU-Linux-x86/routeur] Erreur 1
make[1]: *** [.build-conf] Erreur 2
make: *** [.build-impl] Erreur 2
Je ne comprends vraiment pas pourquoi il ne trouverait pas la fonction (sachant que quand je la remplissais mal, y'avait pas de soucis, il me disait bien que ça marchait pas comme il voulait ^^) .
Je vous remercie d'avance !
Partager