Bonjour,
j'ai un petit soucis. J'ai créé une interface graphique en GTK, j'aimerais l'intégrer au reste du projet en utilisant le "multithread" (je n'en ai jamais fait). j'aimerais faire appele à une fonction en lui envoyant des arguments. J'ai trouvé des solutions mais je ne sais pas les interpréter. Pour moi, void, ça veut dire vide, alors faire un pointer "vide" pour envoyer des données, je suis plus.
j'ai quand même essayé mais ça n'aboutit pas. A la réception, la fonction considère que la variable n'existe pas.
voila la struct à passer :
le main :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 typedef struct arg_pour_thread { int *argc; const char ***argv; }ST_thread;
et le début de la fonction appelée
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 int main (int argc, const char **argv) { //déclarer les threads pthread_t thread_IHM; ST_thread *data; //remplissage des data "arg" data->argc=argc; data->argv=argv //création du thread IHM if (pthread_create(&thread_IHM,NULL,IHM,data)) printf("Ereur création thread"); return 0; }
les ereurs sont :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 void IHM (ST_thread* data) { //initialisation de GTK gtk_init (*data->argc,*date->argv); //création de la fenétre principale GtkWidget *main_fenetre = NULL; main_fenetre = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_title (GTK_WINDOW (main_fenetre), "Yes You Can"); gtk_window_set_position (GTK_WINDOW (main_fenetre), GTK_WIN_POS_CENTER); g_signal_connect (main_fenetre, "destroy", gtk_main_quit, NULL);
data->argc=argc;
data->argv=argv;
make pointer from integer without a cast
et
passing argument 3 imcompatible type of pointer
J'espère que ce que j'ai raconté est compréhensible. Merci d'avance. Philippe
P.S: si vous avez des conseilles, critiques, remarques ou que sais-je encore sur ma manière de coder je suis preneur. Merci
Partager