Получение библиотеки Chrono C ++ (Boost :: sandbox) для работы - PullRequest
3 голосов
/ 10 декабря 2010

Я хотел попробовать Chrono из песочницы Boost. Кажется, он поддерживает много вещей и должен быть стабильным.

У меня установлен Boost в версии 1.44 на моей системе (включая lib_system, которая необходима), и я выбрал версию для песочницы (версия для скачивания старше и отсутствует, например, файл ratio.hpp).

Но он не компилируется. Пытаясь скомпилировать простой пример из документации, связывая boost_system (в scons с LIBS = ['boost_system']), каждый раз возникает следующая ошибка:

obj/main.o: In function `main':
/home/***/src/main.cpp:34: undefined reference to `boost::chrono::system_clock::now()'
scons: building terminated because of errors.

Это похоже на ошибку компоновщика. Что я сделал не так? У меня есть boost_system в версии 1.44, связанная (через scons), и я уже пробовал то же самое с более старой версией 1.40.

Есть советы? Как вы настроили использование хроно?

Спасибо.

Sascha

Редактировать: В этой ветке , в которой говорится о проблемах совместимости, позвольте мне думать, что версия Chrono для песочницы должна работать с boost 1.44.

1 Ответ

1 голос
/ 10 декабря 2010

Как описано в документации Установка Chrono , вам нужно либо собрать и связать библиотеку Chrono, либо определить BOOST_CHRONO_INLINED.

У меня возникли проблемы при сборке Chrono из проверки ствола,но это, вероятно, связано с несовместимостью type_traits, упомянутой в документах Chrono.

Мне удалось собрать пример программы со следующей SConstruct (после исправления ошибок пространства имен):

env = Environment(
    CPPDEFINES = ['BOOST_CHRONO_INLINED'],
    CPPPATH = ['/.../boost_1_44_0', ],
    LIBPATH = ['/.../boost_1_44_0/stage/lib', ],
    LIBS = ['boost_system'],
)

env.Program('chrono-test', 'main.cpp')
...