Salut à tous. Voici mon pbm.
je veux utiliser la fonction getch() sous linux pour récupérer un entier rentré dans le mode console. Mais voilà j'ai une erreur lors du lancement de l'executable.
J'ai bien lus quelques infos sur le net et sur ce site, j'ai vu qu'il existait dans l'include <ncurses.h>son équivalent. Je l'ai donc inclus.
A la compilation c'est bon (avec gcc) mais pas lors de la compil pour obtenir l'exec?
Est-ce alors un pbm de librairies? j'ai fais l'essai sans le getch(), tout marche.
dans "mon" <ncurses.h> j'ai bien une ligne:
Là je sais pas trop ce que ça veut dire....
Code : Sélectionner tout - Visualiser dans une fenêtre à part extern NCURSES_EXPORT(int) getch (void); /* generated */
Merci a vous. Voici le résultat du debogeur lors de la compil pour l'exec, ainsi que le code du prog. (C'est un prog sur les RPC's créé avec rpcgen: Programme client.C'est un exercice).
Code du prog
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 gcc -c calcul_client.c [romeo@localhost xmlrpc++0.7]$ gcc -o client calcul_client.o calcul_clnt.o calcul_client.o(.text+0x12f): In function `main': : undefined reference to `stdscr' calcul_client.o(.text+0x134): In function `main': : undefined reference to `wgetch' collect2: ld returned 1 exit status [romeo@localhost xmlrpc++0.7]$
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65 /* * This is sample code generated by rpcgen. * These are only templates and you can use them * as a guideline for developing your own functions. */ #include <ncurses.h> #include "calcul.h" int calcul_facto_1_arg; void calcul_1(char *host) { CLIENT *clnt; void *result_1; char *calcul_null_1_arg; int *result_2; #ifndef DEBUG clnt = clnt_create (host, CALCUL, VERSION_UN, "udp"); if (clnt == NULL) { clnt_pcreateerror (host); exit (1); } #endif /* DEBUG */ result_1 = calcul_null_1((void*)&calcul_null_1_arg, clnt); if (result_1 == (void *) NULL) { clnt_perror (clnt, "call failed"); } result_2 = calcul_facto_1(&calcul_facto_1_arg, clnt); if (result_2 == (int *) NULL) { clnt_perror (clnt, "call failed"); } else { printf("Le resultat du factoriel de %d est: %d",calcul_facto_1_arg, *result_2); } #ifndef DEBUG clnt_destroy (clnt); #endif /* DEBUG */ } int main (int argc, char *argv[]) { char *host; if (argc < 2) { printf ("usage: %s server_host\n", argv[0]); exit (1); } host = argv[1]; printf("Rentrer le nombre entier n pour le calcul du factoriel de n:\n"); calcul_facto_1_arg=getch(); calcul_1 (host); exit (0); }
Partager