[c++ boost] Mon thread ne se lance pas
RésoluFlayme -
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(); } -
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
-
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
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
-