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

Langage C++ Discussion :

Inclusion de code source dans différents fichiers d'une bibliothèque en compilation. (Comment faire ?)


Sujet :

Langage C++

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Inclusion de code source dans différents fichiers d'une bibliothèque en compilation. (Comment faire ?)
    Salut.

    En fait je voudrais faire ceci : remplacer du code source en compilation dans différent fichiers à l'aide d'une macro, par exemple j'ai ce fichier ici que j'appelle code.h

    Code cpp : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    #include "serializer.h"
    #define THECODE(CLASSNAME, BASE, DERIVED...) \
    struct CLASSNAME : public Serializer<BASE, DERIVED>  { \
      //Définition ici.
    }; \
    CLASSNAME obj

    Et ce fichier ci que je vais appeler implémentation.h

    Code cpp : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    #include "code.h"
    #ifndef KEY 
    #define KEY GETCODE(DEFAULTNAME, DEFAULTBASE, DEFAULTDERIVED)
    #endif
    class EClass {
    //Défintion de la classe ici.
    KEY
    };

    Et je veux inclure le code qui se trouve dans le fichier code.h, dans la classe du fichier implementation.h afin que EClass contienne l'implémentation de la classe et un objet de la classe dans la macro.

    Ce code est dans une bibliothèque et je donne des paramètres par défaut à la macro pour définir le code à générer au cas ou la macro n'est pas redéfinie en dehors de la librairie.
    Jusque là pas de problème.

    Le problème survient ici :
    Je possède une troisième classe qui utilise pointeur sur un objet de type EClass comme ceci : (Cet objet est une entité graphique que je veux dessiner et EClass n'est rien d'autre qu'un pointeur vers un volume de collision)
    Code cpp : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    class DClass {   
          public :
          //Definition de la classe ici.
          EClass* ptr;
    };

    Le problème est que lorsque je veux redéfinir la macro qui inclue le code généré en compilation en dehors de la bibliothèque, j'ai un crash lors du dessin et le pointeur sur l'objet EClass est modifié. (c'est à dire que, par exemple, si il était null, celui-ci contient une adresse)

    Je pense que c'est parce que le code du fichier.h de la bibliothèque, ne correspond plus avec le code contenu dans le fichier .a de la bibliothèque.

    Bref je ne vois pas très bien ce que je devrais faire pour régler le problème à part peut être faire une bibliothèque "header only". ?

    Mais je ne suis pas sûr que ça va fonctionner.
    Dernière modification par Neckara ; 21/08/2014 à 11h50. Motif: librarie -> bibliothèque

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

Discussions similaires

  1. Inclusion d'une partie du code source dans une documentation Doxygen
    Par feanor11 dans le forum Autres éditeurs
    Réponses: 2
    Dernier message: 01/02/2012, 17h29
  2. Réponses: 3
    Dernier message: 23/05/2011, 23h00
  3. Inclusion de Code Adsense dans un fichier
    Par badrel dans le forum Langage
    Réponses: 6
    Dernier message: 12/02/2009, 11h31
  4. Réponses: 15
    Dernier message: 16/01/2009, 00h16
  5. Réponses: 4
    Dernier message: 10/02/2005, 16h10

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