2012-08-14 96 views
4

谷歌一直不友好......解析的外部符號的boost ::時辰:: SYSTEM_CLOCK ::現在(無效)

最近我拉下提升1.50,而我試圖用它來建立我的項目。這是一個大型項目,使用幾個增強功能(線程,信號,指針類,精神等)。一些細節:
- MSVC 9.0(2008)
- 靜態鏈接升壓

我得到每一個產生的EXE鏈接錯誤,但有時辰,這我不會直接鏈接。錯誤是:

libboost_thread-vc90-mt-sgd-1_50.lib(thread.obj) : error LNK2019: unresolved external symbol "public: static class boost::chrono::time_point<class boost::chrono::system_clock,class boost::chrono::duration<__int64,class boost::ratio<1,10000000> > > __cdecl boost::chrono::system_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]) referenced in function "public: bool __thiscall boost::thread::try_join_until(class boost::chrono::time_point<class boost::chrono::system_clock,class boost::chrono::duration<__int64,class boost::ratio<1,1000000000> > > const &)" ([email protected]@[email protected]@[email protected][email protected]@[email protected]@[email protected][email protected][email protected]@[email protected]@@[email protected]@[email protected]@@Z) 

我看到this question,但我不直接控制連接(而不是使用自動鏈接功能)的順序。如果我缺少一個特定的lib,我可以手動鏈接它;次優的,但可能的。但是,我不知道缺少什麼。它似乎(對我的半受教育觀點)這個符號是在chrono lib中出現的,而不是在系統庫中。

任何幫助?

+1

更新:我設法通過在最低級別明確包含線程,計時和系統(按此順序)來解決此問題。我仍然想知道是否有「更好」的解決方案,特別是因爲我甚至不直接使用chrono。 – Nick 2012-08-14 23:55:17

回答

3

看看documentation。它指定您必須鏈接到計時器和系統才能使用線程,除非您提供一些特定的宏來禁用它們(並失去它們的功能)。

+0

是的,我想這是很好的答案。我想我只是期待boost來「自動處理它」與鏈接,而在這種情況下,如果你只包括boost :: threads(或包括錯誤的順序)它無法鏈接。不過很高興知道。 – Nick 2012-08-15 01:33:08