2010-05-14 6 views
1

J'ai un programme simple qui crée et exécute en tant que thread en utilisant des threads boost en C++.Problème avec le programme de base utilisant Boost Threads en C++

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


void hello() 
{ 

    std::cout<<"Hello, i am a thread"<<std::endl; 

} 

int main() 
{ 
    boost::thread th1(&hello); 
    th1.join(); 


} 

Le compilateur renvoie une erreur sur la ligne th1.join(). Il dit «
marqueurs multiples à cette ligne

- undefined reference to 

`boost::thread::join()' 

- undefined reference to 

`boost::thread::~thread()' 

»

+1

sont-les en-têtes de comprennent boost dans votre compilateur chemin? Êtes-vous lié à des bibliothèques nécessaires? – Cogwheel

+0

Je suppose que je suis, pas sûr cependant .. –

+0

C'est une erreur de lien. Vous ne passez probablement pas la bibliothèque requise (l'option concrète dépendra de la version de votre bibliothèque, de la plate-forme et d'autres choses) vers l'éditeur de liens. –

Répondre

1

Il est certainement le problème de ne pas inclure les en-têtes appropriés/liant libs.

1) Vous devez vérifier votre chemin d'inclusion pour avoir le dossier boost approprié et augmenter les en-têtes. 2) Vous devriez compiler votre application avec les fichiers appropriés de bibliothèques statiques (xxx.lib). Pour boost :: thread ce fichier s'appellera quelque chose comme libboost_thread_xxx.lib

1

Dans Eclipse, faites un clic droit sur votre projet et allez dans Propriétés.

Aller à C/C++ Construire -> Paramètres -> Paramètres de l'outil

Ensuite, ouvrez la section Bibliothèques C++ sous GCC Linker.

Dans le panneau Bibliothèques (-l), ajoutez une entrée avec la valeur boost_thread.

(je suppose que votre utilisation de Linux, sinon consultez This question)

+0

Merci, mais j'utilise une machine Windows. J'ai essayé de faire la dame pour Windows et il ne peut pas lier correctement au fichier. J'essaie de lire l'article entier souligné par votre lien, mais il semble trop verbeux .. –

+0

comment avez-vous installer boost alors? l'avez-vous construit à partir de la source? – Flamewires

Questions connexes