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:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
extern NCURSES_EXPORT(int) getch (void);	/* generated */
Là je sais pas trop ce que ça veut dire....

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 : 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 du prog
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);
}