我想获得一个简单的例子与Boost.Timer一起工作的一些秒表性能指标,我无法弄清楚为什么我无法成功链接Boost定时进入Boost.Chrono。我使用以下简单脚本构建了源代码提升链接器错误:Boost.Chrono Boost.Timer
.\b2 --clean
CALL bootstrap
.\b2 --build-type=complete address-model=64
但是仍然收到链接器错误。
70>libboost_timer-vc100-mt-1_49.lib(cpu_timer.obj) : error LNK2001: unresolved external symbol "public: static class boost::chrono::time_point<class boost::chrono::steady_clock,class boost::chrono::duration<__int64,class boost::ratio<1,1000000000> > > __cdecl boost::chrono::steady_clock::now(void)" ([email protected][email protected]@[email protected]@[email protected][email protected]@[email protected]@[email protected][email protected][email protected]@[email protected]@@[email protected]@[email protected])
是否有必要实际上包括--with-chrono
标志使用Timer类?找不到与定时器documentation相关的任何内容,尽管线程documentation似乎更多地提到了我从这个question引出的更多内容,这表明了链接修复的顺序。
这有点令人困惑,因为我看到通过项目设置Linker->General->Additional Library Directories
构建并准备好链接到Visual Studio中的程序集。我认为Boost的设计在处理这些特定的库方面并不明显。任何人都可以评论这个吗?与--with-chrono
/USES_CHRONO
宏有什么关系,它似乎没有阻止构建库,所以它是否有条件地编译出一些代码,特别是time_point类?
我想根据表30.1。线程文档中〜用于配置功能”即USES_CHRONO
是肯定的默认缺省值,因此我应该启用这些功能吧?
C:\...\boost_binaries\msvc10_x64>dir /b | findstr /i chrono
boost_chrono-vc100-mt-1_49.dll
boost_chrono-vc100-mt-1_49.lib
boost_chrono-vc100-mt-gd-1_49.dll
boost_chrono-vc100-mt-gd-1_49.lib
libboost_chrono-vc100-mt-1_49.lib
libboost_chrono-vc100-mt-gd-1_49.lib
libboost_chrono-vc100-mt-s-1_49.lib
libboost_chrono-vc100-mt-sgd-1_49.lib
libboost_chrono-vc100-s-1_49.lib
libboost_chrono-vc100-sgd-1_49.lib
C:\...\boost_binaries\msvc10_x64>dir /b | findstr /i timer
boost_timer-vc100-mt-1_49.dll
boost_timer-vc100-mt-1_49.lib
boost_timer-vc100-mt-gd-1_49.dll
boost_timer-vc100-mt-gd-1_49.lib
libboost_timer-vc100-mt-1_49.lib
libboost_timer-vc100-mt-gd-1_49.lib
libboost_timer-vc100-mt-s-1_49.lib
libboost_timer-vc100-mt-sgd-1_49.lib
libboost_timer-vc100-s-1_49.lib
libboost_timer-vc100-sgd-1_49.lib
C:\...\boost_binaries\msvc10_x64>dir /b | findstr /i _system
boost_system-vc100-mt-1_49.dll
boost_system-vc100-mt-1_49.lib
boost_system-vc100-mt-gd-1_49.dll
boost_system-vc100-mt-gd-1_49.lib
libboost_system-vc100-mt-1_49.lib
libboost_system-vc100-mt-gd-1_49.lib
libboost_system-vc100-mt-s-1_49.lib
libboost_system-vc100-mt-sgd-1_49.lib
libboost_system-vc100-s-1_49.lib
libboost_system-vc100-sgd-1_49.lib
aha,我想我记得在工作期间有关Chrono是“仅头文件”库的内容。我不完全确定细节,但如果这是真的,那么我可以看到包括头是足够的。 – jxramos