2010-11-22 3 views
1

Я пытаюсь скомпилировать мой повысить простой код:подталкивания ошибка компиляции

#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; 
} 

с помощью г ++ с помощью этой команды

g++ main.cpp -o main 

, но я получаю сообщение об ошибке, как это:

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() 

Что не так, и как мне его скомпилировать ...?

+0

Установлен ли libboost-date-time-dev? – 0xAX

+0

Как это проверить ...? Извините за мои глупые вопросы, но я не так хорошо знаком с linux ... – flyjohny

ответ

0

Поскольку компилятор не распознает какой-либо тип, это означает, что вы отсутствуете.

Для posix_time вам нужно добавить #include "boost/date_time/posix_time/posix_time.hpp" поверх вашего кода.

7

Согласно этому

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

Вам это нужно

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

Это круто, но теперь он дает «error:' boost :: this_thread »не был объявлен» ... – flyjohny

+0

Я дал вам ссылку на документацию, которая дает заголовок для всего, что вы используете. Если вы начнете искать в нем, вы получите ответ. –

+0

В соответствии с этим http://www.boost.org/doc/libs/1_45_0/doc/html/thread/thread_management.html#thread.thread_management.this_thread я должен включить #include , но это не решает проблему ... :( – flyjohny

0

Вы должны включить заглавный объявляя posix_time. Посмотрите на документ повышения, чтобы узнать, что это (вы можете попробовать #include "boost/date_time/posix_time/posix_time_system.hpp", но я не уверен, что этого будет достаточно).

1

Я подозреваю, что в вашей системе установлена ​​старая версия Boost. Прочтите файл /usr/include/boost/version.hpp. И в зависимости от того, какая версия у вас есть, обратитесь к документации по конкретной версии (см. Boost Documentation). Или установите последнюю версию Boost, либо используя функциональные возможности вашей системы упаковки, если они доступны, либо вручную следуйте инструкциям по установке (см. Getting Started on Unix Variants).

Смежные вопросы