2015-11-19 52 views
2

我想获得一个简单的例子与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 

回答

0

貌似链接顺序不解决它,这是我在这个项目已经设置设置Linker->General->Input->Additional Dependencies这表明Visual Studio中有一些方案来它是如何去追逐后连接依赖性因为某种方式要么是如何助推依赖由或如何我使用升压在我的源代码。

冲突的目录,我们有习惯在指向额外目录的房子里,让链接器找出它,但我想这对所有的libr都不够健壮白羊座。有趣的链接顺序,我想知道如何在Visual Studio中定义默认行为。

enter image description here

6

这类似于another question。答案是:

#include <boost/chrono.hpp> 
+0

aha,我想我记得在工作期间有关Chrono是“仅头文件”库的内容。我不完全确定细节,但如果这是真的,那么我可以看到包括头是足够的。 – jxramos