2009-12-12 5 views
2

J'utilise Ubuntu + Eclipse et boost installé (pas sûr). J'ai installé Boost en utilisant apt-get install libboost *Compilation boost :: thread avec Eclipse

J'ai testé un code simple, il semble que le boost marche bien.

Cependant, lorsque j'essaie d'apprendre la partie thread, le code ci-dessous ne fonctionne pas.

#include <boost/thread/thread.hpp> 
#include <iostream> 
using namespace std; 

void hello() 
{ 
    cout<<"hello!"<<endl; 
} 

int main() 
{ 
    boost::thread thrd(&hello); 
    cout<<"Just a test!"<<endl; 
} 

L'information d'erreur est la suivante, il y a 4 erreurs.

Severity and Description Path Resource Location Creation Time Id 
/usr/local/include/boost/thread/detail/thread.hpp undefined reference to `boost::detail::thread_data_base::~thread_data_base()' FirstCppProject line 40 1260656497961 200 


Severity and Description Path Resource Location Creation Time Id 
/usr/local/include/boost/thread/detail/thread.hpp undefined reference to `boost::thread::start_thread()' FirstCppProject line 191 1260656497967 202 


Severity and Description Path Resource Location Creation Time Id 
/usr/local/include/boost/thread/pthread/thread_data.hpp undefined reference to `vtable for boost::detail::thread_data_base' FirstCppProject line 65 1260656497965 201 


Severity and Description Path Resource Location Creation Time Id 
undefined reference to `boost::thread::~thread()' FirstCppProject test.cpp line 15 1260656497959 199 

S'il vous plaît pardonnez-moi si ma question est trop naïve. S'il vous plaît offrir toute information que vous pensez pourrait m'aider.

Répondre

4

vous devez lier à la bibliothèque de fil libboost_thread _...

+0

merci pour votre commentaire rapide. Est-ce un problème avec Eclipse? Alors, comment faire cela dans Eclipse? Je pensais que lorsque j'ai installé boost sur Ubuntu, je n'ai rien à faire avec Eclipse. – skydoor

+0

Non, ce n'est pas un problème d'éclipse, vous devrez spécifier une option pour l'éditeur de liens (vérifiez les options du projet), quelque chose comme -lboost_thread-gcc-4.3 ou similaire, vous devrez d'abord trouver la librairie son nom, vous devrez probablement lier aussi avec pthread. – user229321

+0

Vous devrez lier avec pthread. J'ai dû le faire avant. – KitsuneYMG

1

Avec Boost, parfois, vous avez juste besoin de dire à votre liée où les bibliothèques sont et il sera de savoir laquelle de lier contre.

+1

La liaison automatique ne fonctionne pas en g ++, c'est une fonctionnalité visuelle en C++ donc elle n'est pas disponible sous * nix – user229321

1

Pour ajouter un linker-> 1.Cliquez sur le projet 2.select sur la fenêtre des propriétés 3.click sur le c/C++ construire 4. 5. choisissez d'autres bibliothèques et choisissez 6. alors vous pouvez ajouter des linkers: boost_thread et boost_system etc

Questions connexes