compilation GCC et fichier header
Bonjour à tous,
Pour un projet personnel j'essaye d'implémenter la classe StringTokenizer qui existe en Java mais en C (pas en C++ mais bien en C, ce sera évidemment pas un classe donc). Bref c'était juste pour le contexte.
Mon souci le voici, c'est mon premier fichier header que je fais, et je galère un peu. Je vous montre ce que j'ai :
Mon fichier StringTokenizer.h :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| #ifndef StringTokenizer_H
#define StringTokenizer_H
#include <stdio.h>
#include <stdlib.h>
typedef struct StringTokenizer{
char * str;
int indice;
char delim;
}StringTokenizer;
int countTokens(StringTokenizer str);
int hasNext(StringTokenizer str);
int next(StringTokenizer * str);
StringTokenizer* createStringTokenizer(char * s,char delim);
#endif |
Mon fichier StringTokenizer.c :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
#include "StringTokenizer.h"
StringTokenizer * createStringTokenizer(char * s,char delim){
StringTokenizer * tok;
tok=malloc(sizeof(StringTokenizer));
tok->str=s;
tok->indice=0;
tok->delim=delim;
return tok;
}
int countTokens(StringTokenizer tok){}
int hasNext(StringTokenizer tok){}
int next(StringTokenizer * tok){} |
Comme vous pouvez le voir j'ai pris le temps d'implémenter qu'un seule méthode afin de juste faire un test qui s'est révélé être nécessaire ^^
En fin le fichier de test, test.c :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| #include <stdio.h>
#include <stdlib.h>
#include "StringTokenizer.h"
int main(){
char s[50];
printf("entrez votre chaine");
scanf("%s",s);
StringTokenizer *token;
token=createStringTokenizer(s,' ');
free(token);
return 0;
} |
Bon, ces trois fichiers sont dans le même dossier, et je lance la commande suivante afin de compiler le code dans un terminal:
Code:
gcc test.c StringTokenizer.h
Et le code d'erreur en retour de la compilation est :
Code:
1 2 3
| /tmp/ccNuRixI.o: In function `main':
test.c:(.text+0x4f): undefined reference to `createStringTokenizer'
collect2: ld returned 1 exit status |
Voilà, c'est tout, cela fait bien une semaine que je suis à chercher dans tous les coins de l'Internet et je trouve rien, je vous remercie donc d'avance de prendre en compte mon problème et de m'aider.
Sur ce, bon weekend