Bonjour,
Suite a un rapide détour par la Fac C++ pour trouver le moyen de pouvoir appeler une méthode d'une classe dans un Thread... Cependant je me retrouve alors avec une erreur de compilation qui m'est inconnue.
Voici les différentes parties nécessaires :
Main.cpp
affichage.cpp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 int main(int argc, char **argv) { affichage aff(argc, argv); HANDLE thread_aff; thread_aff = CreateThread( NULL, 0, &affichage::LunchThread, &aff, 0, NULL ); // ... }
affichage.h
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36 // ... static DWORD WINAPI LunchThread( void *Param ) { affichage* Obj = reinterpret_cast<affichage*>( Param ); return Obj->start(); } DWORD affichage::start() { /* Creation de la fenetre */ Win = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_position(GTK_WINDOW(Win), GTK_WIN_POS_CENTER); gtk_window_set_default_size(GTK_WINDOW(Win), 320, 200); gtk_window_set_title(GTK_WINDOW(Win), "Commande"); /* Creation du label */ Status = gtk_label_new(NULL); gtk_label_set_markup(GTK_LABEL(Status), "<b>Status</b> : Demarrage"); gtk_label_set_justify(GTK_LABEL(Status), GTK_JUSTIFY_LEFT); gtk_container_add(GTK_CONTAINER(Win), Status); /* Connexion du signal "destroy" */ g_signal_connect(G_OBJECT(Win), "destroy", G_CALLBACK(OnDestroy), NULL); gtk_widget_show_all(Win); /* Demarrage de la boucle evenementielle */ //HANDLE thread_aff; //thread_aff = CreateThread(NULL,0,&affichage::set_all,this,0,NULL); gtk_main(); return 0; } // ...
Et l'erreur de compilation :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 // ... class affichage { private: GtkWidget *Win; GtkWidget *Status; public: affichage(int &argc, char** &argv); ~affichage(); DWORD set_all(); static DWORD WINAPI LunchThread(void *Param); void affichage::set_status(char *value); DWORD start(); }; // ...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Switching to target: default Compiling: main.cpp Compiling: classes\affichage.cpp Linking console executable: TPE.exe .objs\main.o:main.cpp:(.text+0x1c7): undefined reference to `_ZN9affichage11LunchThreadEPv@4' collect2: ld returned 1 exit status Process terminated with status 1 (0 minutes, 9 seconds) 0 errors, 0 warnings
Partager