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 de compilation : undefined reference to


Sujet :

C++

  1. #1
    Futur Membre du Club
    Inscrit en
    Août 2009
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 9
    Points : 7
    Points
    7
    Par défaut problème de compilation : undefined reference to
    Bonjour,

    Je suis débutant en C++, Je veux développer un simple client bittorent en C++ en utilisant la bibliothèque libtorrent implémenté en C++. je travaille sur ubuntu 8.10/

    Après le telechargement du code source de la bibliothèque, je l'ai installé en utilisant ./configure, make, make install.

    J'ai un petit exemple prêt qui utilise libtorrent que j'ai voulu testé.

    Ce code contient des include de fichiers de la bibliothèque : voila l'entête du code source :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    #include "libtorrent/session.hpp"
    #include "libtorrent/session_settings.hpp"
    #include "libtorrent/hasher.hpp"
    #include "libtorrent/create_torrent.hpp"
    #include <boost/thread.hpp>
    #include <boost/tuple/tuple.hpp>
     
    #include "test.hpp"
    #include "setup_transfer.hpp"
     
    using namespace libtorrent;
         ....
    Quand je compile en utilisant g++ test_torrent.cpp -o test_torrent.cpp.exe

    j'ai l'erreur suivante :
    test_torrent.cpp: (.text+0x2b5): undefined reference to `libtorrent::session::session(libtorrent::fingerprint const&, std::pair<int, int>, char const*, int)'
    test_torrent.cpp: (.text+0x2bd): undefined reference to `libtorrent::default_storage_constructor(libtorrent::file_storage const&, boost::filesystem::basic_path<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, boost::filesystem::path_traits> const&, libtorrent::file_pool&)'
    test_torrent.cpp: (.text+0x30c): undefined reference to `libtorrent::session::add_torrent(libtorrent::add_torrent_params const&)'
    test_torrent.cpp: (.text+0x31b): undefined reference to `test_sleep(int)'
    test_torrent.cpp: (.text+0x330): undefined reference to `libtorrent::torrent_handle::status() const'
    test_torrent.cpp: (.text+0x466): undefined reference to `report_failure(char const*, char const*, int)'
    test_torrent.cpp: (.text+0x4fc): undefined reference to `report_failure(char const*, char const*, int)'
    test_torrent.cpp: (.text+0x55f): undefined reference to `libtorrent::torrent_handle::prioritize_files(std::vector<int, std::allocator<int> > const&) const'
    test_torrent.cpp: (.text+0x5a1): undefined reference to `test_sleep(int)'
    test_torrent.cpp: (.text+0x5b6): undefined reference to `libtorrent::torrent_handle::status() const'
    test_torrent.cpp: (.text+0x704): undefined reference to `report_failure(char const*, char const*, int)'
    test_torrent.cpp: (.text+0x79a): undefined reference to `report_failure(char const*, char const*, int)'
    test_torrent.cpp: (.text+0x7c5): undefined reference to `libtorrent::torrent_handle::prioritize_files(std::vector<int, std::allocator<int> > const&) const'
    test_torrent.cpp: (.text+0x7d1): undefined reference to `test_sleep(int)'
    test_torrent.cpp: (.text+0x7e6): undefined reference to `libtorrent::torrent_handle::status() const'
    test_torrent.cpp: (.text+0x90a): undefined reference to `report_failure(char const*, char const*, int)'
    test_torrent.cpp: (.text+0x9a0): undefined reference to `report_failure(char const*, char const*, int)'
    test_torrent.cpp: (.text+0xaa7): undefined reference to `libtorrent::session::~session()'
    test_torrent.cpp: (.text+0xad8): undefined reference to `libtorrent::session::~session()'
    Est-ce que quelqu'un peut m'aider à résoudre ce problème?

    Ça doit être un problème de référence à la bibliothèque?
    Ça fait deux jours que j'essaye de résoudre ce problème sans résultat.

    Merci pour votre aide.

  2. #2
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Bonjour et bienvenu,
    Il semblerait que ton projet exemple ne lie pas avec les .lib de ta bibliothèque. D'où l'échec de l'édition de lien.

  3. #3
    Futur Membre du Club
    Inscrit en
    Août 2009
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    Merci pour la réponse.

    J'ai essayé d'indiqué le chemin de la bibliotheque avec cette commande :

    g++ test_torrent.cpp -l /usr/local/lib/ -o test_torrent.exe

    J'ai eu cette erreur :

    /usr/bin/ld: cannot find -l/usr/local/lib/
    collect2: ld returned 1 exit status

  4. #4
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Je n'utilise quasiment jamais la commande en ligne mais m'appuie sur un I.D.E. Cependant, il me semble que la commande ressemble à quelque chose comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    g++ test_torrent.cpp -L/usr/local/lib/ -ltorrent -o test_torrent.exe
    En supposant que tu ais un libtorrent.a dans le répertoire /usr/local/lib/. A toi d'adapter au besoin.

  5. #5
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    26 860
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 860
    Points : 219 062
    Points
    219 062
    Billets dans le blog
    120
    Par défaut
    @3DArchi: Vous avez juste dans votre exemple (du moins c'est mieux que minou777)

    @minou777: Votre erreur ressemble énormément au manque de la bibliothèques.
    De plus la commande que vous utilisez ne demande pas d'utiliser la bibliothèque pour le torrent.
    Explication:

    pour gcc / g++ l'option:
    -l permet d'ajoute une bibliothèque ( -ltorrent ( qui est un raccourci, mais passons))
    -L permet de rajouter un répertoire ou le compilateur devra chercher les bibliothèques que l'on veut inclure.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  6. #6
    Futur Membre du Club
    Inscrit en
    Août 2009
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    J'ai reussi de compiler le test_torrent.cpp. En fait y'avais un makefile fourni avec l'exemple qui permet de faire la compilation !

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 21/03/2013, 09h19
  2. Réponses: 2
    Dernier message: 28/09/2011, 21h56
  3. Problème compilation undefined reference to main
    Par Loïc Le Bars dans le forum Fortran
    Réponses: 1
    Dernier message: 30/03/2010, 16h52
  4. problème de compilation "undefined reference to"
    Par grabriel dans le forum Code::Blocks
    Réponses: 0
    Dernier message: 05/05/2008, 12h08
  5. Erreur compilation "undefined reference to "
    Par ViRouF dans le forum C++
    Réponses: 5
    Dernier message: 02/03/2007, 14h55

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