IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C Discussion :

compilation GCC et fichier header


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2010
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 16
    Par défaut 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 : 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
    #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 : 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
     
    #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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    gcc test.c StringTokenizer.h
    Et le code d'erreur en retour de la compilation est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  2. #2
    Membre éprouvé Avatar de Flow_75
    Femme Profil pro
    Ingénieure
    Inscrit en
    Mai 2005
    Messages
    1 100
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieure
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 100
    Par défaut
    Salut

    Quand tu compiles, il faut rajouter StringTokenizer.c dans ta ligne quand tu compiles.
    Ne mets pas ton .h dans ta ligne de commande....

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2010
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 16
    Par défaut
    lol
    C'est tout à fait ça, grand merci à toi

  4. #4
    Membre éprouvé Avatar de Flow_75
    Femme Profil pro
    Ingénieure
    Inscrit en
    Mai 2005
    Messages
    1 100
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieure
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 100
    Par défaut
    Citation Envoyé par charlie.camus Voir le message
    lol
    C'est tout à fait ça, grand merci à toi
    Pas de probleme, n'oublies pas le

  5. #5
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    Un détail sur les fichiers d'en-tête :
    On ne voit pas de raison de faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    #include <stdio.h>
    #include <stdlib.h>
    dans StringTokenizer.h qui n'utilise aucune des définitions figurant dans ces fichiers

    Par contre, on devrait avoir
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    #include <stdlib.h> // pour l'utilisation de malloc()
    #include "StringTokenizer.h"
    dans StringTokenizer.c

  6. #6
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2010
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 16
    Par défaut
    ok c'est noté, merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Compiler aussi quand un des fichiers header a changé
    Par ikeas dans le forum Eclipse C & C++
    Réponses: 0
    Dernier message: 04/12/2014, 14h27
  2. Réponses: 10
    Dernier message: 26/03/2009, 10h15
  3. [gcc] ajouter un chemin relatif a des fichiers header
    Par wodel dans le forum Autres éditeurs
    Réponses: 4
    Dernier message: 12/11/2007, 13h54
  4. [GCC] compilation de plusieurs fichier.o
    Par jobe dans le forum Autres éditeurs
    Réponses: 5
    Dernier message: 25/04/2007, 12h56
  5. Réponses: 3
    Dernier message: 12/07/2006, 22h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo