2010-11-22 37 views
1

benim artırmak basit bir kod derlemek çalışıyorum: Bu komutlaBoost derleme hatası

g++ main.cpp -o main 

ile g ++ kullanımı

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

void workerFunc(const char* msg, float delay_ms) 
{ 
boost::posix_time::milliseconds workTime(delay_ms); 

std::cout << "Worker: running, message = " << msg << std::endl; 

// Pretend to do something useful... 
boost::this_thread::sleep(workTime); 

std::cout << "Worker: finished" << std::endl; 
} 

int main(int argc, char* argv[]) 
{ 
std::cout << "main: startup" << std::endl; 

boost::thread workerThread(workerFunc, "Hello, Boost!", 2.5e3); 

std::cout << "main: waiting for thread" << std::endl; 

workerThread.join(); 

std::cout << "main: done" << std::endl; 

return 0; 
} 

ama ben böyle bir hata alıyorum:

main.cpp: In function `void workerFunc(const char*, float)': 
main.cpp:7: error: `boost::posix_time' has not been declared 
main.cpp:7: error: `milliseconds' was not declared in this scope 
main.cpp:7: error: expected `;' before "workTime" 
main.cpp:12: error: `boost::this_thread' has not been declared 
main.cpp:12: error: `workTime' was not declared in this scope 
main.cpp: In function `int main(int, char**)': 
main.cpp:21: error: no matching function for call to `boost::thread::thread(void (&)(const char*, float), const char[14], double)' 
/usr/include/boost/thread/thread.hpp:35: note: candidates are: boost::thread::thread(const boost::thread&) 
/usr/include/boost/thread/thread.hpp:38: note:     boost::thread::thread(const boost::function0<void, std::allocator<boost::function_base> >&) 
/usr/include/boost/thread/thread.hpp:37: note:     boost::thread::thread() 

Sorun nedir ve nasıl derlemeliyim?

+0

Libboost-date-time-dev yüklü mü? – 0xAX

+0

Nasıl kontrol edilir? Benim aptalca sorularım için özür dilerim, ama ben linux ile çok tanıdık değilim ... – flyjohny

cevap

0

Derleyici bir tür tanıyamadığı için, bazı eksikleri içerdiğiniz anlamına gelir.

Posix_time için kodun üstünde #include "boost/date_time/posix_time/posix_time.hpp" eklemeniz gerekir.

7

bu

http://www.boost.org/doc/libs/1_45_0/doc/html/date_time/posix_time.html

göre bu

#include "boost/date_time/posix_time/posix_time.hpp" 
+0

Bu harika, ama şimdi "hata:' boost :: this_thread 'vermedi "... – flyjohny

+0

Size bağlantı verdi Kullandığınız her şeyin başlığını veren belgeler. Eğer içinde arama yaparsanız, cevabı alırsınız. –

+0

Bu http://www.boost.org/doc/libs/1_45_0/doc/html/thread/thread_management.html#thread.thread_management.this_thread adresine göre #include adresini eklemeliyim. Bu sorunu çözmez ... :( – flyjohny

0

Sen başlık ilan posix_time eklemeniz gerekir gerekir. Hangi olduğunu görmek için boost belgesine bakın (#include "boost/date_time/posix_time/posix_time_system.hpp" deneyebilirsiniz ama bu yeterli olacağını emin değilim).

1

Sisteminizde yüklü eski bir Boost sürümünüz olduğundan şüpheleniyorum. /usr/include/boost/version.hpp dosyasını okuyun. Ve hangi sürüme sahip olduğunuza bağlı olarak, sürüme özgü belgelere bakın (bkz. Boost Documentation). Veya sisteminizin paketleme işlevini kullanarak ya da yükleme yönergelerini el ile uygulayarak En Son Yükseltme sürümünü yükleyin (bkz. Getting Started on Unix Variants).