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

Dev-C++ Discussion :

Compilation s�par�e avec devc++


Sujet :

Dev-C++

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    40
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 40
    Par d�faut Compilation s�par�e avec devc++
    Salut,

    Je viens de lire plusieurs forums pour faire de la compilation s�par�e avec devC++ mais je n'ai pas r�ussi avec mon prog.
    Voila, j'ai 3 fichiers : main.cpp, point.cpp et point.hpp
    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
    /*********** main.cpp **************/
    #include <cstdlib>
    #include <iostream>
    #include "point.hpp"
    #include "point.cpp"
     
    using namespace std;
     
    int main(int argc, char *argv[])
    {
        point a(5,2);
        a.affiche();
        a.deplace(-2, 4);
        a.affiche();
        point b(1, -1);
        b.affiche();
        system("PAUSE");
        return EXIT_SUCCESS;
    }
    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
    /*********** point.cpp **************/
    #include <iostream>
    #include "point.hpp" // pour introduire les déclarations de la classe point
    using namespace std;
     
    // Définition des fonctions memebres de la classe point
    point::point(int abs, int ord)
    {
    x = abs;
    y = ord;
    }
     
    void point::deplace (int dx, int dy)
    {
         x = x + dx;
         y = y + dy;
    }
     
    void point::affiche()
    {
         cout<<"Je suis en"<< x<<" "<<y<<"\n";
    }
    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
    /*********** point.hpp **************/
    #ifndef POINT_H
    #define POINT_H
    // déclaration de la classe point
    class point
    {
          private :
          int x; // déclaration des membres privés
          int y;
     
          public : //déclaration des membres publics
          point (int abs, int ord); //constructeur
          void deplace (int dx, int dy);
          void affiche();
    };
     
    #endif
    Voici les erreurs obtenues � la compilation :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    multiple definition of 'point::point(int,int)'
    first defined here
    multiple definition of 'point::point(int,int)'
    first defined here
    multiple definition of 'point::deplace(int,int)'
    first defined here
    multiple definition of 'point::affiche(int,int)'
    first defined here
    ld returned 1 exit status
    [build Error]

  2. #2
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    1. Tr�s mauvais. Retire �a.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    40
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 40
    Par d�faut probl�me compilation s�par�e sous DevC++
    Voila � nouveau le m�me message remis en forme :
    Je viens de lire plusieurs forums pour faire de la compilation s�par�e avec devC++ mais je n'ai pas r�ussi avec mon prog.
    Voila, j'ai 3 fichiers : main.cpp, point.cpp et point.hpp
    /*********** main.cpp **************/
    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
     
    #include <cstdlib>
    #include <iostream>
    #include "point.hpp"
    #include "point.cpp"
     
    using namespace std;
     
    int main(int argc, char *argv[])
    {
    point a(5,2);
    a.affiche();
    a.deplace(-2, 4);
    a.affiche();
    point b(1, -1);
    b.affiche();
    system("PAUSE");
    return EXIT_SUCCESS;
    }
    /*********** point.cpp **************/
    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
     
    #include <iostream>
    #include "point.hpp" // pour introduire les déclarations de la classe point
    using namespace std;
     
    // Définition des fonctions memebres de la classe point
    point::point(int abs, int ord)
    {
    x = abs;
    y = ord;
    }
     
    void point::deplace (int dx, int dy)
    {
    x = x + dx;
    y = y + dy;
    }
     
    void point::affiche()
    {
    cout<<"Je suis en"<< x<<" "<<y<<"\n";
    }

    /*********** point.hpp **************/
    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 POINT_H
    #define POINT_H
    // déclaration de la classe point
    class point
    {
    private :
    int x; // déclaration des membres privés
    int y;
     
    public : //déclaration des membres publics
    point (int abs, int ord); //constructeur
    void deplace (int dx, int dy);
    void affiche();
    };
     
    #endif

    Voici les erreurs obtenues � la compilation :

    multiple definition of 'point::point(int,int)'
    first defined here
    multiple definition of 'point::point(int,int)'
    first defined here
    multiple definition of 'point::deplace(int,int)'
    first defined here
    multiple definition of 'point::affiche(int,int)'
    first defined here
    ld returned 1 exit status
    [build Error]

  4. #4
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    Tu inclues toujours point.cpp...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    40
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 40
    Par d�faut
    J'ai enlev� #include point.cpp dans main.cpp et �a marche. Mais pourquoi ne faut-il pas l'inclure ? Comment le compilateur sait-il qu'il doit aller chercher ce fichier �tant donn� que m�me dans mon fichier point.hpp, je ne fais pas d'inclusion de point.cpp.
    Merci bien M�dinoc.

  6. #6
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

    Informations professionnelles :
    Activit� : D�veloppeur informatique
    Secteur : High Tech - �diteur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    C'est normal que tu ne fasse pas d'inclusions, puisqu'on appelle �a la compilation s�par�e.

    Comment le compilo le sait ?
    2 solutions :
    1. Sans makefile, g�n�ralement on passe tout simplement la liste de fichiers sur la ligne de commande et on compile tout en une fois :
      Code : S�lectionner tout - Visualiser dans une fen�tre � part
      g++ -o MonProgramme.exe main.cpp point.cpp
      Il est �galement possible de le faire en plusieurs fois comme dans l'autre m�thode, mais sans makefile, c'est rare qu'on le fasse.
    2. Avec un makefile, on �crit une liste de d�pendances pour chaque fichier ainsi que la ligne de commandes n�cessaire :
      Code : S�lectionner tout - Visualiser dans une fen�tre � part
      1
      2
      3
      4
      5
      6
      main.o : main.cpp point.h
      	g++ -c main.cpp
      point.o : point.cpp point.h
      	g++ -c point.cpp
      MonProgramme.exe : main.o point.o
      	g++ main.o point.o
      Ainsi, le programme make lira le makefile et ex�cutera ces trois commandes:
      Code : S�lectionner tout - Visualiser dans une fen�tre � part
      1
      2
      3
      g++ -c main.cpp
      g++ -c point.cpp
      g++ main.o point.o
      Les deux premi�res commandes g�n�reront chacune un fichier .o, la derni�re fera l'ex�cutable � partir de ces deux fichiers .o.
      Le fait d'ajouter le .h aux listes de d�pendances ne veut rien dire pour le compilo lui-m�me, mais pour le programme make, �a veut dire "recompiler main.cpp si main.cpp ou point.h est modifi�".

    Et pour ton informatio, Dev-C++ utilise la seconde m�thode : Avec les options du projet, il g�n�re automatiquement un makefile puis il appelle make.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parl� avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Erreur avec sizeof et compilation s�par�e
    Par oranoutan dans le forum C
    R�ponses: 8
    Dernier message: 22/07/2008, 18h41
  2. Compiler des sources C avec devc++
    Par win-pierre dans le forum C
    R�ponses: 1
    Dernier message: 24/04/2008, 23h19
  3. Compilation sous windows avec devc++
    Par dr_octopus74 dans le forum Dev-C++
    R�ponses: 4
    Dernier message: 17/01/2007, 22h48
  4. Compilation s�par�e avec dev C/C++
    Par benjiprog dans le forum Dev-C++
    R�ponses: 5
    Dernier message: 07/11/2005, 18h26
  5. Api mysql avec Devc++, erreur de compilation
    Par Viiince dans le forum Autres �diteurs
    R�ponses: 5
    Dernier message: 15/06/2004, 17h19

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