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 :

Problème pour la compilation séparée


Sujet :

C

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2011
    Messages : 6
    Points : 5
    Points
    5
    Par défaut Problème pour la compilation séparée
    Bonjour,

    J'ai fait un programme, et je voudrais le séparer. Seulement je ne comprends pas pourquoi, mais je rencontre l'erreur "multiple definition of *function*" pour toutes mes fonctions... Je trouve pas où j'ai fait une erreur!

    Si c'est important, je suis sous windows, je compile avec Cygwin et mon éditeur est Geany. Voilà en gros mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    //bigint.h
    #ifndef BIGINT_H
    #define BIGINT_H
     
    typedef struct Biginteger* big_integer_t;
     
    big_integer_t bigIntFromString (const char *str, size_t length);
    void freeBigInt(big_integer_t a);
    void print(big_integer_t bi);
     
    #endif
    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
     
    //bigint.c
    struct Biginteger
    {
    	char *data;
        size_t length;
    };
     
     
    big_integer_t bigIntFromString (const char *str, size_t length) 
    {
        //code
    }
     
    void freeBigInt(big_integer_t a)
    {
    	//code
    }
     
    void print(big_integer_t bi) 
    {
    	//code
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    //main.c
    #include <stdio.h>
    #include <stdlib.h>
     
    #include "bigint.h"
    #include "bigint.c"
     
    int main()
    {
            //code
     
    	return 0;
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    makefile
    bigint : bigint.o main.o
    	gcc bigint.o main.o -o bigint
    bigint.o : bigint.h bigint.c
    	gcc -c bigint.c
    main.o : bigint.h main.c
    	gcc -c main.c
    Après avoir fait ca, sur le terminal je fais bien
    make
    puis
    ./bigint
    ?

    Voilà... Si vous pouviez m'éclairer... Merci

  2. #2
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Points : 50 367
    Points
    50 367
    Par défaut
    Dans main.c,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    #include "bigint.h"
    #include "bigint.c"
    Du fait que tu inclues bigint.c les fonctions définies dans bigint.c sont aussi définies dans main.obj
    comme en plus, tu te linkes avec bigfint.obj ==> multiply definition.

    enlève le #include "bigint.c" de ton main.c et cela ira nettement mieux.

    Il y a très peu de cas où il est légitime d'inclure un fichier .c (ou .cpp), en général, c'est une erreur.
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2011
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2011
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Merci beaucoup, en effet ça marche beaucoup mieux .
    Bonne journée!

Discussions similaires

  1. Problème simple de compilation séparée
    Par chrisdayton dans le forum Débuter
    Réponses: 7
    Dernier message: 03/12/2009, 07h50
  2. Problème de chemin pour la compilation de JSP
    Par piloupy dans le forum Servlets/JSP
    Réponses: 7
    Dernier message: 21/03/2007, 07h56
  3. Problème pour compiler Ogre avec VS 2005
    Par Oxideur dans le forum Ogre
    Réponses: 2
    Dernier message: 01/03/2007, 18h33
  4. [Compiler] Problème pour compiler un script
    Par usama2 dans le forum MATLAB
    Réponses: 3
    Dernier message: 18/02/2007, 14h52
  5. Problème pour compiler avec gcc
    Par Mick.Zen dans le forum Autres éditeurs
    Réponses: 2
    Dernier message: 28/06/2006, 14h05

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