Salut � tous.
J'utilise une biblioth�que dans laquelle, j'ai d�clar� d'une part des fonctions et d'autre part des constantes de couleurs.
Ma biblioth�que se nomme "libmine".
Ce qui me pose probl�me, ce sont mes constantes. Par contre, je n'ai pas de probl�mes avec mes fonctions.
Dans "libmine.c", j'ai mis :
Dans "libmine.h", j'ai mis :
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5 #include "libmine.h" T_COLOR _black = { 0, 0, 0}; T_COLOR _grey = {128, 128, 128}; T_COLOR _white = {255, 255, 255};
Je compile la biblioth�que. Aucun probl�me.
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 #ifndef __LIBMINE__ #define __LIBMINE__ typedef struct { char red; char green; char blue; } T_COLOR; T_COLOR _black; T_COLOR _grey; T_COLOR _white; #endif
Dans le programme "main.c", j'appelle l'include :
J'obtiens la liste suivante des messages d'erreurs :
Code : S�lectionner tout - Visualiser dans une fen�tre � part #include "libmain.h"
J'ai pourtant mis le warpper "#ifndef" afin d'�viter la duplication du contenu de "libmine.h".
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3 /usr/bin/ld*: /warehouse/Prog_C/09.Library//libmine.a(tft.o):(.data+0x808)*: définitions multiples de «*_white*»; main.o:(.bss+0x8)*: défini pour la première fois ici /usr/bin/ld*: /warehouse/Prog_C/09.Library//libmine.a(tft.o):(.data+0x80c)*: définitions multiples de «*_grey*»; main.o:(.bss+0x4)*: défini pour la première fois ici /usr/bin/ld*: /warehouse/Prog_C/09.Library//libmine.a(tft.o):(.bss+0xf0a0)*: définitions multiples de «*_black*»; main.o:(.bss+0x0)*: défini pour la première fois ici
A tout hasard, je donne le makefile du main.c :
Pourquoi ai-je ce probl�me que sur les constantes ?
Code Makefile : 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 # ------------------------------- # # Déclaration des Executables # # ------------------------------- # RM = @rm -f CC = @gcc EX = @chmod +x # -------------------------- # # Déclaration des Objets # # -------------------------- # SRC = main.c OBJ = main.o BIN = tft18 # ---------------------------- # # Déclaration des Includes # # ---------------------------- # INCS = -I"/warehouse/Prog_C/09.Library/include/" # --------------------------------- # # Déclaration des Bibliothèques # # --------------------------------- # LIBS = -L"/warehouse/Prog_C/09.Library/" # ------------------------------ # # Déclaration des Paramètres # # ------------------------------ # FLAG = -O -Wall -Wextra -Wpedantic LOAD = -lmine -lm # ------------------------------------ # # Compilation et Edition des liens # # ------------------------------------ # all: before $(BIN) after before: clear $(RM) $(OBJ) $(RM) $(BIN) $(BIN): $(OBJ) $(CC) $(OBJ) $(LIBS) -o $(BIN) $(LOAD) $(OBJ): $(SRC) $(CC) -c $(SRC) $(INCS) -o $(OBJ) $(FLAGS) after: $(RM) $(OBJ) $(EX) $(BIN) @./$(BIN)
Je ne comprends pas pourquoi les d�claratives de mes fonctions ne me pose aucun probl�me.
Comment r�soudre mon probl�me ?
Cordialement.
Artemus24.
@+
Partager