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

Résolu

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. 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
    1. Modérateur

      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. 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
      2. Modérateur
        @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
      3. @mamiemando

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

        0