Boost fil d'erreur: undefined reference

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

void hello()
{
  std::cout <<
    "Hello world, I'm a thread!"
    << std::endl;
}

int main(int argc, char* argv[])
{
  boost::thread thrd(&hello);
  thrd.join();
  return 0;
}

J'ai couru essayé de compiler ce programme, et a obtenu ces erreurs:

/usr/include/boost/thread/pthread/mutex.hpp:40: undefined reference to
`boost::thread_resource_error::thread_resource_error()'
/usr/include/boost/thread/pthread/mutex.hpp:40: undefined reference to 
`boost::thread_resource_error::~thread_resource_error()'
/usr/include/boost/thread/pthread/mutex.hpp:40: undefined reference to 
`typeinfo for boost::thread_resource_error'
./src/thread.o: In function `condition_variable':
/usr/include/boost/thread/pthread/condition_variable_fwd.hpp:33: 
undefined reference to `boost::thread_resource_error::thread_resource_error()'
/usr/include/boost/thread/pthread/condition_variable_fwd.hpp:33: 
undefined reference to `boost::thread_resource_error::~thread_resource_error()'
/usr/include/boost/thread/pthread/condition_variable_fwd.hpp:33: \
undefined reference to `typeinfo for boost::thread_resource_error'
./src/thread.o: In function `thread_data_base':
/usr/include/boost/thread/pthread/thread_data.hpp:54: 
undefined reference to `vtable for boost::detail::thread_data_base'
./src/thread.o: In function `thread<void (*)()>':
/usr/include/boost/thread/detail/thread.hpp:188: 
undefined reference to `boost::thread::start_thread()'
./src/thread.o: In function `~thread_data':
/usr/include/boost/thread/detail/thread.hpp:40: 
undefined reference to `boost::detail::thread_data_base::~thread_data_base()'
/usr/include/boost/thread/detail/thread.hpp:40: undefined reference to 
`boost::detail::thread_data_base::~thread_data_base()'

Quelqu'un peut-il me dire pourquoi j'obtiens cette erreur?

  • Sonne comme boost n'est pas correctement installé sur votre système
  • mais mon #include <boost/algorithm/string.hpp> #include <iostream> #include <boost/thread.hpp> using namespace std; using namespace boost; int main() { string str1; cin>>str1; //string str1(" hello world! "); to_upper(str1); cout<<str1; return 0; } fonctionne parfait
  • je l'ai trouvé j'ai besoin d'installer libboost-fil paquet sous ubuntu
  • C'est la compilation et l'exécution de l'amende dans mon booster fil du système. Si je dois convenir que c'est probablement un problème avec votre installation. Aussi, merci de m'apprendre une nouvelle façon d'utiliser le boost de threads. Je l'avais été avec eux, avec les classes qui ont l'opérateur() définie -- c'est l'interprétation que j'ai eu de la lecture.
  • Ou essayez de lier directement libboost_system-mgw47-mt-d-X_XX.a trouvé dans $(BOOST_ROOT)/state/libs/
  • J'ai eu un problème similaire et a déterminé que c'était parce que j'avais 2 boosts installé sur mon système. Se débarrasser de l'une a causé le code à compiler. Espérons que cela aide quelqu'un pour qui les autres solutions n'ont pas les aider.

InformationsquelleAutor lal | 2010-08-27