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

Threads & Processus C++ Discussion :

Linkage Boost thread


Sujet :

Threads & Processus C++

  1. #1
    Invité
    Invité(e)
    Par défaut Linkage Boost thread
    Bonjours (ou bonsoir) à tous !

    Je suis en train de m'atteller à la création d'un jeu vidéo qui dois me rendre riche célèbre, et puissant (ou pas... ^^ ) mais j'ai un petit soucis :

    Voila, j'ai mon code, largement inspiré du magnifique tuto de Pierre Schwartz, et je me suis dit : "pour tester mes fonctions, je vais faire une console OutGame, qui seras appelée avec le paramètre --console"

    J'implémente, et puis je tombe sur un os : quand je lance ma console, ça bloque tout le reste :
    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
     
    Game::Game(int argc, char** argv)
    {
        bool pass = false;
     
        for(int i = 0; i < argc; i++){
            if(argv[i] == "--console"){
                pass = true;
            }
        }
     
        m_listeEngines["game"] = new Game_engine(this, pass);
        m_listeEngines["graphics"] = new Graphics_engine(this, pass);
        m_listeEngines["sound"] = new Sound_engine(this, pass);
     
        still_running = true;
        if(pass){
            OutGameConsole(this);
        }
    }
    Je pense donc tout de suite aux threads, pour avoir des actions en parallèle, donc, dans le constructeur de mon OutGameConsole, je met le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    OutGameConsole::OutGameConsole(Game* parent) : Console(parent)
    {
        boost::thread runThread = boost::thread(boost::bind(&OutGameConsole::run, this));
    }
     
    void OutGameConsole::run(){
        //La boucle avec les commandes
    }
    Mais voila : mon compilateur ne l'entendant pas de cette oreille, j'ai eu droit à tout plein d'insultes...

    Les voici :

    undefined reference to `__imp___ZN5boost6threadD1Ev'
    undefined reference to `__imp___ZN5boost6thread12start_threadEv'


    J'ai linké libboost_thread, libboost_date_time et libboost_system, mais rien ne marche...

    Quelqu'un aurait il une solution à mon problème ?

    Merci d'avance

    Jet

  2. #2
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    undefined reference signifie toujours qu'il manque le code compilé de certains entête.

    Vérifie donc que tu as précisément les bons noms de librairies, qu'elles soient accessibles.

    Vérifie aussi les versions, sait-on jamais.

  3. #3
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Par défaut
    Bonjour jetSett et bienvenue sur le forum

    Quel OS ? Comment à tu installé boost ?

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjours (merci d'être aussi accueillant envers un nouveau )

    OS : Windows XP SP3
    J'ai installé boost en suivant le tuto de matthieu-brucher et aussi grâce à la doc de boost.

    J'ai utilisé la commande : bjam.exe --toolset=gcc --with-[la bibliothèque à compiler] stage

    J'ai compilé et linké les bibliothèques boost::thread, boost::date_time et boost::system, suite à un conseil .

    Je code sous CodeBlocks (svn 8024) avec mingw (gcc v. 4.7.0)
    Bjam est sous la version 2011.4
    Je n'arrive pas à trouver la version de boost, mais il me semble que c'est la dernière (à vérifier)

    Merci de vous occuper de mon cas

    Bonne Journée

    EDIT : Je vais re-télécharger la nouvelle version de boost (la mienne étais la 1.49) et de bjam, j'édite ce post si mon problème est résolu
    Dernière modification par Invité ; 24/07/2012 à 18h35.

  5. #5
    Invité
    Invité(e)
    Par défaut
    Alors Voila, j'ai fait ce que j'ai dit dans l'édit de mon précédent post :

    J'ai pris la dernière version de bjam : 2011.12
    La dernière version de Boost 1.5

    ça ne marche toujours pas mais les erreurs ont changées :

    obj\Debug\OutGameConsole.o||In function `_ZN5boost6threadD1Ev'
    C:\boost_1_50_0\boost\thread\detail\thread.hpp|174|undefined reference to `__imp___ZN5boost6thread6detachEv'|
    obj\Debug\OutGameConsole.o||In function `_ZN5boost6threadC1INS_3_bi6bind_tIvNS_4_mfi3mf0Iv14OutGameConsoleEENS2_5list1INS2_5valueIPS6_
    (un truc très long)
    C:\boost_1_50_0\boost\thread\detail\thread.hpp|186|undefined reference to `__imp___ZN5boost6thread12start_threadEv'|


    Voila voila...

    Merci d'avance de l'intéret que vous allez porter à mon problème, et bonne soirée à vous

  6. #6
    Inactif  


    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    5 288
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Santé

    Informations forums :
    Inscription : Novembre 2008
    Messages : 5 288
    Par défaut
    Citation Envoyé par jetSett Voir le message
    merci d'être aussi accueillant envers un nouveau )
    Profite en, tu es tombé la bonne semaine, dès lundi prochain, on tire à vue sur les nouveaux

    Pour la version de boost, j'imagine que c'est la dernière, la 1.50, pas la 1.5 ?

    Vérifie quand même que tu as les ddl, mais je pense plutôt à un problème de configuration de C::B pour linker les libs. Tu fais comment ? Voir aussi la FAQ : http://cpp.developpez.com/faq/cb/?page=3#19 (je sais pas si c'est à jour). Sinon, une recherche sur le forum devrait te permettre de trouver des post où les personnes ont résolu le problème de link dans C::B

    Bon courage

  7. #7
    Invité
    Invité(e)
    Par défaut
    Bof, dans une semaine, je suis plus un nouveau

    Tout à fait, ma version est la 1.50

    Un problème de linkage codeblocks ? comment ça ? quand je link, je vais dans projet > build option > configuration debug > linker > j'indique le chemin absolut vers les biblios et pareil en release (mais sans les -d dans le nom)

    Par contre, dans la FAQ, je ne comprend pas une phrase :
    Prêter attention aux options du projet et aux options des cibles

    CàD ?

    Je vais continuer à chercher dans le forum (j'avais déjà bien sur commencé avant de poster)

    Merci, bonsoir

  8. #8
    Invité
    Invité(e)
    Par défaut Résolu !
    Bonjour (soir) à tous !

    Voila, en cherchant bien, j'ai eu la réponse :

    Quand on a ce genre de problème, il faut définir une constante de préprocesseur sous la forme (notez que cela n'est utile que si vous utilisez boost en version bibliothèque dynamique):

    BOOST_[nom de la fonctionnalité, chez moi THREAD ]_USE_LIB

    Après, recompilez entièrement le projet, si il y a encore des erreurs, linkez d'autres fonctionnalités, et recompilez entièrement après.
    Dans mon cas il m'a fallu linker boost::chrono

    Merci à tous pour vos conseils avisés et votre aide

Discussions similaires

  1. Problème de compilation/linkage avec boost::thread
    Par theanthony33 dans le forum Boost
    Réponses: 7
    Dernier message: 26/04/2010, 00h37
  2. [Débutant] boost::thread non-lvalue
    Par Tymk dans le forum Boost
    Réponses: 16
    Dernier message: 18/11/2006, 14h23
  3. Questions de perfomance avec boost::thread
    Par Rafy dans le forum Boost
    Réponses: 36
    Dernier message: 05/10/2006, 15h21
  4. boost::thread et OpenGL
    Par Kurisu dans le forum Boost
    Réponses: 12
    Dernier message: 19/09/2006, 13h23

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