我想从Boost沙箱中试用Chrono。它似乎支持很多东西,应该是稳定的。
我在我的系统上安装了1.44版本的Boost(包括需要的boost_system lib)并使用了沙盒版本(下载版本较旧,但是错过了例如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.
这似乎是一个链接器错误。我做错了什么?我在版本1.44链接(通过scons)中有boost_system,并且已经尝试使用旧版本1.40。
任何提示?你是如何设置使用计时器的?
感谢。
的Sascha
编辑: This thread,正在讨论兼容性问题,让我想一下沙盒版的Chrono应该可以使用boost 1.44。
答案 0 :(得分:1)
如Installing Chrono文档中所述,您需要构建和链接Chrono库,或者定义BOOST_CHRONO_INLINED
。
我在后备箱检查中构建Chrono时遇到了问题,但它可能与Chrono文档中提到的type_traits不兼容性有关。
我能够使用以下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')