начало работы с boost cpu_timer, ошибка: «boost :: timer :: cpu_timer» не был объявлен - PullRequest
1 голос
/ 18 марта 2012

Я пытаюсь скомпилировать эту простую программу, чтобы начать изучать, как использовать таймеры:

#include <boost/timer.hpp>

using boost::timer::cpu_timer;
//...
nanosecond_type last_checkpoint_time = 0;
cpu_timer checkpoint_timer;  // start the timer

for (;;)
{
  //process_a_transaction();
  if (checkpoint_timer.elapsed().user - last_checkpoint_time > 5*1000000000LL)
  {
    //... create a checkpoint ...
    last_checkpoint_time = checkpoint_timer.elapsed().user;  
    cout << checkpoint_timer.elapsed().user << endl;
  }
}

Я использую gentoo linux и выдаю следующую команду для компиляции:

g ++ -I / usr / include / boost-1_46 timer1.cpp -o таймер

Я получаю эти ошибки:

timer1.cpp:3:21: error: ‘boost::timer::cpu_timer’ has not been declared
timer1.cpp:5:1: error: ‘nanosecond_type’ does not name a type
timer1.cpp:6:1: error: ‘cpu_timer’ does not name a type
timer1.cpp:8:1: error: expected unqualified-id before ‘for’
timer1.cpp:8:8: error: expected unqualified-id before ‘)’ token

Я читал документы в разделе Ошибки и предупреждения , но у меня проблема в том, что у меня есть только две библиотеки:

/usr/lib/libboost_test_exec_monitor-1_46.a
/usr/lib/libboost_test_exec_monitor-mt-1_46.a

Это потому, что я не использовал флаг static-libs во время компиляции boost? Будет ли мне лучше использовать static-libs? Может быть, это касательная. Что еще может вызвать ошибки, приведенные выше? Пожалуйста, прости мое невежество, поскольку я довольно плохо знаком с C ++ / boost.

Спасибо

Ответы [ 3 ]

2 голосов
/ 18 марта 2012

Я не использовал cpu_timer сам, но быстрый поиск в Google, кажется, показывает, что вы должны включить <boost/timer/timer.hpp> вместо этого. Что касается ошибки nanosecond_type, для этого нужно использовать другой оператор using.

1 голос
/ 18 марта 2012

Кажется, я понял, в чем проблема. Я цитировал пример в моем оригинальном посте из документации версии 1.49. cpu_timer впервые обсуждался в документации по бусту в версии 1.48. На данный момент стабильная версия gentoo - 1.46, а тестирование - только версия 1.47, версия 1.48 - замаскирована. Таким образом, мой единственный вариант - удалить буст из моей системы, загрузить tar 1.49 и, возможно, сломать мою систему по сравнению с бустом или подождать, пока удалится маска с версии 1.48.

0 голосов
/ 18 марта 2012

В любом случае static-libs не имеет значения, потому что это ошибка компилятора, а не компоновщик.Он не смотрит на библиотеки до стадии компоновщика, до тех пор только релевантные заголовки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...