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

Boost C++ Discussion :

[Débutant] boost::thread non-lvalue


Sujet :

Boost C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    309
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 309
    Par défaut [Débutant] boost::thread non-lvalue
    Je viens tout juste de réussir à installer boost (enfin je crois) et mon premier programme test bugge :
    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
    37
    38
    39
    40
    #include <iostream>
    #include <boost/thread/thread.hpp>
    #include "fmod.h"
     
    using namespace std;
     
    int play_sound();
    bool init_fmod();
     
    int main()
    {
    	cout << "Hello world!" << endl;
    	boost::thread mon_thread(&play_sound());
    	system("pause");
    	return 0;
    }
     
     
    bool init_fmod()
    {
    ...
    }
     
    int play_sound()
    {
         if(init_fmod() == false) return 1;
     
         FSOUND_SAMPLE *monSon; 
     
         monSon = FSOUND_Sample_Load(FSOUND_FREE, "son.wav", 0, 0, 0);
     
         if(!monSon)
         {
             cout << "Erreur : son non valide : " << FMOD_ERRORS(FSOUND_GetError()) << endl;
         }else{
             FSOUND_PlaySound(FSOUND_FREE, monSon);
         }
     
         return 0;
    }
    Le compilateur me renvoie l'erreur :
    error : non-lvalue in unary '&'
    L'erreur vient-elle du code ou de l'installation de boost ?

  2. #2
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    du code :
    boost::thread mon_thread(play_sound)
    On passe un pointeur sur la fonction, pas le résultat de l'appel à la fonction.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    309
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 309
    Par défaut
    Je comprend mais lorsque j'enlève les parenthèses j'ai droit à une erreur du linker
    Linking console executable: C:\Programmation\CPP\Codes\test thread\console.exe
    .objs\main.o:main.cpp: (.text+0x1bd): undefined reference to `boost::thread::thread(boost::function0<void, std::allocator<boost::function_base> > const&)'
    .objs\main.o:main.cpp: (.text+0x226): undefined reference to `boost::thread::~thread()'
    .objs\main.o:main.cpp: (.text+0x25c): undefined reference to `boost::thread::~thread()'
    collect2: ld returned 1 exit status

  4. #4
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Faut peut-être ajouter la bibliothèque ? C'est indiqué dans mon tuto sur Boost.Thread qu'il faut ajouter la bibliothèque dans l'édition des liens.

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    309
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 309
    Par défaut
    Bon je crois que j'ai un problème avec la compilation de boost :
    Quand j'ajoute à mon projet Code::Blocks la librairie "D:\Boost\lib\boost_thread-mgw-mt.lib" ça compile mais lors du lancement de l'application il me dit qu'il ne trouve pas la dll correspondante. Et effectivement, dans "D:\Boost\lib\" je n'ai qu'une vingtaine de .dll pour environ 200 .lib

    J'ai pourtant rajouter "D:\Program Files\CodeBlocks\bin" et utilisé la ligne de commande suivante pour la compilation de boost
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    bjam sMINGW_ROOT_DIRECTORY=D:\Progra~1\CodeBl~1 -sTOOLS=mingw --without-python --prefix=D:\Boost install
    Quelqu'un sait d'où vient le problème ?

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    1 354
    Détails du profil
    Informations personnelles :
    Âge : 50
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 354
    Par défaut
    ... si il manque la dll c'est parce qu'il faut qu'elle soit situé dans le PATH
    (variable d'environnement)

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    309
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 309
    Par défaut
    Ok, ça fonctionne. Je n'ai plus qu'a me familiariser avec le threading parce que pour l'instant ça fait pas vraiment ce que veux.

    Je te remercie de ta patience et ton aide précisieuse.

    Tymk

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

Discussions similaires

  1. Réponses: 10
    Dernier message: 31/03/2010, 23h34
  2. [Débutant] Thread non bloquant
    Par GoustiFruit dans le forum Langage
    Réponses: 4
    Dernier message: 28/11/2007, 17h08
  3. Boost thread avec fonction membre non statique.
    Par Klaim dans le forum Boost
    Réponses: 2
    Dernier message: 11/08/2007, 02h58
  4. [Débutant] [Applet] Applet non visible
    Par John Blobsmith dans le forum Applets
    Réponses: 6
    Dernier message: 26/09/2006, 14h25
  5. [Struts][Débutant]Servlet Action non dispo ?
    Par Ho(c)ine. dans le forum Struts 1
    Réponses: 7
    Dernier message: 09/04/2004, 08h06

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