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
CR_ASTERIX est un "typedef enum " définissant les différents codes retour des fonctions.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 CR_{ASTERIX decodageMessage();
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
La fonction InitialiserDecodeur () est écrite dans ../include dans le fichier Decode.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 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:
Lors de la compilation, l'erreur suivante est affiché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
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
La ligne 34 correspond à la ligne ou est appelée la fonction Initialiserdecodeur()Test.o(.text+0x50): In function `decodageMessage()':
/communs/MODULE/TEST/Test.c:34: undefined reference to `InitialiseDecodeur()'
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.
Partager