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

Résolu/Fermé
Flayme - Modifié le 24 févr. 2023 à 13:39
 Flayme - 8 mars 2023 à 07:40

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

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
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749
24 févr. 2023 à 13:33

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

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
mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024 7 749 > Flayme
27 févr. 2023 à 16:43

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
Flayme > mamiemando Messages postés 33079 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 23 avril 2024
8 mars 2023 à 07:40

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

0