2010-12-10 82 views
3

我想試試Boost沙盒中的Chrono。它似乎支持很多東西,應該是穩定的。讓Chrono C++庫(Boost :: sandbox)正常工作

我在我的系統(包括需要的boost_system lib)上安裝了1.44版本的Boost,並且使用了沙箱版本(下載版本比較老,並且沒有使用比例.hpp文件)。

但它不編譯。試圖從文檔編譯簡單的例子,與鏈接boost_system(與LIBS =在scons的[「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相同。

任何提示?你是如何設置你使用計時器的?

感謝。

薩沙

編輯:This thread,這是談論的兼容性問題,讓我覺得計時的沙箱版本應該能夠提升1.44合作。

回答

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') 
+0

是啊,我就意識到需要定義語句(如果非連接的版本是一個使用),但我只是在源代碼中定義這個變量是錯誤的。在我的Scons腳本中使用CPPDEFINES後(如你的例子),一切工作正常。謝謝你的回答,並感謝你的scons例子。我使用Chrono的主幹版本,並將所有標題複製到我的升級安裝中。沒有必要修復一些問題或進一步的問題(但我不知道主幹版本是否修補了其他一些庫,也許這對其他人來說可能是個問題)。 – sascha 2010-12-11 15:48:36