[c++ boost] Mon thread ne se lance pas

Résolu
Flayme -  
 Flayme -

Bonjour,

Je viens d'installer boost sur MinGW, je compile le programme si dessous mais quand je lance l'executable rien ne se passe.

Voici mon code:

#include <boost/thread.hpp>
#include <string>
#include <iostream>

void fct(int s, std::string str)
{
    boost::this_thread::sleep_for(boost::chrono::seconds(s));
    std::cout << str;
}

int main()
{
    boost::thread t(&fct, 1, " World");
    std::cout << "Hello";
    t.join();
    return 0;
}

La commande pour compiler:

g++ test_thread.cpp -o test_thread.exe -L"\MinGW\lib" -lboost_thread-mgw63-mt-x32-1_66 -lboost_system-mgw63-mt-x32-1_66 -lboost_chrono-mgw63-mt-x32-1_66

Merci d'avance pour votre aide,

Flayme

2 réponses

  1. Flayme
     

    J'ai aussi essayé le programme hello world dans la partie tutorial

    #include <boost/thread/thread.hpp>
    #include <iostream>
    
    void helloworld()
    {
        std::cout << "Hello World!" << std::endl;
    }
    
    int main()
    {
        boost::thread thrd(&helloworld);
        thrd.join();
    }
    0
  2. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 940
     

    Bonjour,

    Le programme que tu as partagé dans le message #0 me paraît correct (si on se réfère par exemple à ce lien). Chez moi sous Linux, il fonctionne :

    (mando@silk) (~) $ g++ test_thread.cpp -lboost_thread -lboost_system -lboost_chrono -o test_thread
    
    (mando@silk) (~) $ ./test_thread
    Hello World
    
    (mando@silk) (~) $

    J'utilise boost 1.74.0-18.1.

    Par ailleurs, tu parles d'un tutoriel dans ton message #1. De quel tutoriel parles-tu ? Celui-ci ?

    Bonne chance

    0
    1. Flayme
       

      Je parlais du fichier dans boost_folder/libs/thread/tutorial/helloworld.cpp

      Mais c'est bon en fait j'ai trouver la solution (désolé de pas l'avoir écrit):

      Il fallait juste mettre toute les librairies dans le fichier ou je compilais

      0
      1. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 940 > Flayme
         

        Merci pour ton retour.

        Normalement, tu n'as pas à copier les librairies dans le même dossier que ton fichier.

        • Soit les librairies sont dans un dossier standard et ton compilateur devrait les trouver (c'est ce qui s'est passé dans mon message #2);
        • Soit il faut passer des options supplémentaires à ton compilateur (voir option -L pour gcc)

        Un exemple ici. De plus, si des librairies ne sont pas trouvées, la compilation devrait échouer et tu ne devrais pas avoir d'exécutable du tout (à moins que ce que tu aies lancé soit un précédent résultat de compilation qui n'en dépendait pas).

        Bonne chance

        0
      2. Flayme > mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention  
         

        oui mais ça marche quand je le fais donc c'est bon,mon problème est résolu. Merci quand même.

        0