【问题标题】:Getting Chrono C++ library (Boost::sandbox) to work让 Chrono C++ 库 (Boost::sandbox) 工作
【发布时间】:2010-12-10 14:44:54
【问题描述】:

我想在 Boost 沙盒中试用 Chrono。好像支持很多东西,应该是稳定的。

我的系统上安装了 1.44 版的 Boost(包括所需的 boost_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.

这似乎是一个链接器错误。我做错了什么?我在 1.44 版中链接了 boost_system(通过 scons),并且已经尝试与旧版本 1.40 相同。

有什么建议吗?您是如何设置使用 chrono 的?

谢谢。

萨沙

编辑:This thread,这是在谈论兼容性问题,让我认为 Chrono 的沙盒版本应该可以与 boost 1.44 一起使用。

【问题讨论】:

    标签: c++ boost linker scons


    【解决方案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')
    

    【讨论】:

    • 是的,我知道需要定义语句(如果非链接版本是要使用的),但我只在源中定义这个变量一次就错了。在我的 Scons 脚本中使用 CPPDEFINES 后(如您的示例),一切正常。感谢您的回答,并感谢您的 scons 示例。我正在使用 Chrono 的主干版本,并且只是在我的 boost 安装中复制了所有标题。不需要进行一些修复或进一步的问题(但我不知道主干版本是否正在修补其他一些库。也许这对其他人来说可能是个问题)。
    猜你喜欢
    • 1970-01-01
    • 2015-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多