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
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.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
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;
}
// ...
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
// ...
 
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();
};
 
// ...
Et l'erreur de compilation :

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