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 :

undefined reference to ...


Sujet :

C++

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2012
    Messages : 4
    Points : 5
    Points
    5
    Par défaut undefined reference to ...
    Bonjour a tous.

    Etant debutant en C++, j'ai terminer mon premier projet et je suis maintenant aux tests unitaires.

    Des la 2eme classe de tests, je rencontre ce probleme :

    /tmp/ccHno3kM.o: In function `SensorNamespace::Sensor::getNature()':
    SensorTest_Unit.cpp: (.text+0x8ab): undefined reference to `soci::postgresql'
    SensorTest_Unit.cpp: (.text+0x8b3): undefined reference to `soci::session::session(soci::backend_factory const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
    SensorTest_Unit.cpp: (.text+0x947): undefined reference to `soci::details::prepare_temp_type::~prepare_temp_type()'
    SensorTest_Unit.cpp: (.text+0x95e): undefined reference to `soci::details::prepare_temp_type::~prepare_temp_type()'
    SensorTest_Unit.cpp: (.text+0xb11): undefined reference to `soci::session::~session()'
    SensorTest_Unit.cpp: (.text+0xb28): undefined reference to `soci::session::~session()'
    en gros, a ce que je comprends, il manque des includes dans mes fichiers, mais les includes sont la, bien la !

    pour compiler j'utilise cette commande :

    g++ -o sensor -lboost_unit_test_framework SensorTest_Unit.cpp -I/usr/local/include/soci/ -I/usr/local/pgsql/include/
    Ma premiere classe de test fonctionne correctement car il n'y a pas de connexion avec postgresql...

    et voici la classe en question qui bug :

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    #define BOOST_TEST_DYN_LINK
    #define BOOST_TEST_MODULE Sensor
     
    #include <boost/test/unit_test.hpp>
     
    //#include "../GetSetValues/Sensor.cpp"
     
    #include "../GetSetValues/Sensor.hpp"
     
    #include <soci/session.h>
    #include <soci/soci.h>
    #include <soci/soci-backend.h>
    #include <soci/postgresql/soci-postgresql.h>
    #include <soci/postgresql/common.h>
     
    #include <cstdlib>
     
    using namespace soci;
    using namespace SensorNamespace;
     
    BOOST_AUTO_TEST_SUITE(unit)
    BOOST_AUTO_TEST_SUITE(sensor)
     
    // constructeur + get
    BOOST_AUTO_TEST_CASE(sensor_construct) {
     
    	int sID = 10;
    	int supID = 11;
    	std::string nat = "temperature";
     
    	BOOST_CHECK_EQUAL(sID,10);
     
    	SensorNamespace::Sensor s(sID,supID,nat);
     
    BOOST_AUTO_TEST_SUITE_END()
    BOOST_AUTO_TEST_SUITE_END()
    Merci d'avance de vos réponses

  2. #2
    Membre éprouvé

    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    533
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 533
    Points : 1 086
    Points
    1 086
    Par défaut
    Apparemment tu as oublié de fournir certaines librairies à ton linker.
    -lsoci_core -lsoci_postgresql -ldl -lpq
    http://soci.sourceforge.net/doc/back...ostgresql.html

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2012
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2012
    Messages : 4
    Points : 5
    Points
    5
    Par défaut
    Merci, ça ma beaucoup aider, surtout pour comprendre qu'il fallait que je modifie mon CMakeList pour pouvoir lancer mes tests, je m'explique.


    Vue que mes classes ont des heritages et sont associées entre elles.

    Juste avec la commande g++ et les libraires, le compilateur rale car il ne trouve pas, dans mon cas, Sensor.cpp et les librairies de soci.

    Il faut ajouter dans CMakeList :


    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
    24
    25
    FIND_LIBRARY(SOCI_LIBRARIES_PGSQL NAMES libsoci_postgresql soci_postgresql 
      HINTS
      /usr/lib
    )
     
    TARGET_LINK_LIBRARIES(
        sensorUtest
        ${Boost_LIBRARIES}
        ${PostgreSQL_LIBRARIES}
        ${SOCI_LIBRARIES_PGSQL}
        ${SOCI_LIBRARIES_CORE}
    )
     
    ADD_EXECUTABLE(
        sensorUtest
        ${sut_files}
    )
     
    SET(sensor ${SMOOTHING_SOURCE_DIR}/GetSetValues/Sensor.cpp)
    SET(....les autres classes...)
    SET(classe1 ...)
     
    SET(data_files ${sensor} ${classe1} ${classe2} ...)
     
    SET(sut_files ${data_files} ${SMOOTHING_SOURCE_DIR}/UnitTests/SensorTest_Unit.cpp)

    Voilà, j'espere que ça aidera certaine personne à resoudre les problemes de librairies.

    Bonne journée a bientot

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

Discussions similaires

  1. winsock.h : undefined reference...
    Par abraxas dans le forum Dev-C++
    Réponses: 14
    Dernier message: 06/08/2012, 13h42
  2. Undefined reference compilation réseau
    Par Ren97 dans le forum Dev-C++
    Réponses: 11
    Dernier message: 08/03/2005, 09h46
  3. Compilation de xmms : undefined reference to...
    Par Michaël dans le forum Applications et environnements graphiques
    Réponses: 4
    Dernier message: 04/02/2005, 19h05
  4. undefined reference to `xmlParseFile'
    Par Clemaster dans le forum Autres éditeurs
    Réponses: 2
    Dernier message: 25/06/2004, 20h38
  5. g++ : undefined reference to ...
    Par le_barbu dans le forum Autres éditeurs
    Réponses: 16
    Dernier message: 14/05/2004, 07h23

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