Partage
  • Partager sur Facebook
  • Partager sur Twitter

Undefined Reference To...

Code::Block semble avoir de la misère à linker

    28 mai 2008 à 3:33:42

    Bojours, j'ai un projet sur lequel je travaille et lorsque je tente de compiler il me sort l'erreur:
    obj/Debug/engine/data/image_manager.o: In function `image_manager':
    /home/isra/devel/C++/HeroWar/engine/data/image_manager.cpp:6: undefined reference to `hw::data_manager<sf::Image>::data_manager()'
    /home/isra/devel/C++/HeroWar/engine/data/image_manager.cpp:6: undefined reference to `hw::data_manager<sf::Image>::data_manager()'
    obj/Debug/engine/data/image_manager.o: In function `~image_manager':
    /home/isra/devel/C++/HeroWar/engine/data/image_manager.h:15: undefined reference to `hw::data_manager<sf::Image>::~data_manager()'
    /home/isra/devel/C++/HeroWar/engine/data/image_manager.h:15: undefined reference to `hw::data_manager<sf::Image>::~data_manager()'


    Évidemment, cela signifie que le code objet des fonction constructeur de la classe de base de image_manager n'est pas trouvé. Pourtant j'ai ajouté ceux-ci au projet de code::block et les include sont tous bien fait. Si je fais un include vers le fichier .cpp tout marche nickel (mais c'est TRÈS laid :P). Donc je ne sais plus quoi faire, si vous pourriez m'aider svp. Je peux vous envoyer le dossier du projet.

    Merci
    • Partager sur Facebook
    • Partager sur Twitter
      29 mai 2008 à 3:51:13

      Tu compile avec quoi? code::blok ou avec le terminal (ps si tu compile avec code:blok essaye le terminal)
      • Partager sur Facebook
      • Partager sur Twitter
        29 mai 2008 à 4:58:39

        comme d'hab, erreur ligne 42 de ilestoulecode.cpp

        trêves de plaisanteries, est-ce que tu as mis l'implémentation de ta classe template dans un .cpp séparé ? si oui fait la mettre dans le .h
        • Partager sur Facebook
        • Partager sur Twitter
          31 mai 2008 à 17:48:30

          je suis sur code::block.
          Sinon, je déclare ma classe dans un header avec les template, comme d'hab.
          #ifndef IMAGE_MANAGER_H
          #define IMAGE_MANAGER_H
          
          #include "data_manager.h"
          
          #include <SFML/Graphics.hpp>
          #include <string>
          
          namespace hw
          {
          
          class sf::Image;
          
          class image_manager : public data_manager<sf::Image>
          {
              public:
              protected:
                  /** Default constructor */
                  image_manager();
          
                  virtual sf::Image* load_data(const std::string id);
                  virtual bool save_data(const sf::Image* data, const std::string path);
          
                  friend class data;
          
              private:
          };
          
          }
          
          #endif // IMAGE_MANAGER_H
          


          #include "image_manager.h"
          //#include "data_manager.cpp" Si j'enlève le commentaire, ça marche.
          
          using namespace hw;
          
          image_manager::image_manager() : data_manager<sf::Image>()
          {
              //ctor
          }
          
          
          sf::Image* image_manager::load_data(const std::string path)
          {
              return 0;
          }
          
          bool image_manager::save_data(const sf::Image* data, const std::string path)
          {
              return false;
          }
          


          Voilà, Merci
          • Partager sur Facebook
          • Partager sur Twitter

          Undefined Reference To...

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown