Bonjour à tous,
J'ai un problème de compilation. Voici les détails :

Le fichier d'entete est Test.h, il contient l'entete de la fonction decodageMessage
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
CR_{ASTERIX decodageMessage();
CR_ASTERIX est un "typedef enum " définissant les différents codes retour des fonctions.
Il est defini dans une librairie écrite en C, dans un repertoire dans la racine /communs/Librairie/Include

Le fichier .c contient le corps de la fonction decodageMessage et le main

Test.c


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
CR_ASTERIX decodageMessage()			      
{
 
  CR_ASTERIX initDecodeur = InitialiseDecodeur();
 
  if (initDecodeur == AST_OK)
    {
      printf("Initialisation du decodeur OK \n");
    }  
  else
    {
      printf("Problème init décodage \n");
    }
 
 return initDecodeur;
}
 
int 
main(int argc, char * argv[]){
 
  int Action = 0;
 
  printf("L'action à effectuer est: \n");
  scanf("%d",&Action);
 
  switch(Action)
    {
    case '0' : decodageMessage(); break;
    case '1' : /*une autre fonction*/;break;	
    } 
  return 0;
 
}
La fonction InitialiserDecodeur () est écrite dans ../include dans le fichier Decode.c

La compilation de ce bout de programme se fait sur une machine linux 64bit, à l'aide du compilateur g++ (le source est en c mais les fonctions appelées derrière sont en
partie en C++.

Le makefile utilisé est le suivant:

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
 
CXX	=	g++
LD	=	$(CXX)
 
RM	=	$(shell which rm) -rf
 
INCLUDE	=	-I../include	\
		-I${EDASTXPATH}/INCLUDE
 
LIB	=	\
		-L../lib	\
		-L/usr/X11R6/lib64	\
		-L/communs/Librairie/LIB
 
LIBS	=	-lLib 	
 
FLAGS	=	-g -Wall ${INCLUDE} ${LIB}
 
default:
	@echo "Make all par defaut"
	make all
 
all: Test
 
Test: Test.o 
	@${CXX} ${FLAGS} -o Test Test.o ${LIBS}
 
Test.o: Test.c Test.h
	@${LD} ${FLAGS} -c Test.c
 
clean:
	@${RM} *.o
 
mrproper: clean
	@${RM}	Test
Lors de la compilation, l'erreur suivante est affichée:
Test.o(.text+0x50): In function `decodageMessage()':
/communs/MODULE/TEST/Test.c:34: undefined reference to `InitialiseDecodeur()'
La ligne 34 correspond à la ligne ou est appelée la fonction Initialiserdecodeur()

Merci de m'aider à résoudre cette erreur. Je soupçonne le makefile vu la simplicité du code.
Je suis débutante en makefile en plus, donc merci pour votre aide.
Boheme83.