2013-07-19 67 views
2

我正在使用VS10的boost 1_53庫。
我在鏈接過程中遇到了許多未解決的符號。像下面這樣:來自boost文件系統的未解決符號

error LNK2019: unresolved external symbol "void __cdecl boost_1_53_0::filesystem::path_traits::convert(char const *,char const *,class std::basic_string<unsigned short,struct std::char_traits<unsigned short>,class std::allocator<unsigned short> > &,class std::codecvt<unsigned short,char,int> const &)" ([email protected][email protected]@[email protected]@[email protected][email protected]@[email protected]@[email protected]@[email protected]@[email protected]@[email protected]@[email protected]@Z) referenced in function "void __cdecl boost_1_53_0::filesystem::path_traits::convert(char const *,class std::basic_string<unsigned short,struct std::char_traits<unsigned short>,class std::allocator<unsigned short> > &,class std::codecvt<unsigned short,char,int> const &)" ([email protected][email protected]@[email protected]@[email protected][email protected]@[email protected]@[email protected]@[email protected]@[email protected]@[email protected]@[email protected]@Z) 

我檢查/ LIBPATH設置正確,也是「boost_1_53_0_filesystem-mt.lib」的鏈接線即將到來。
我用DUMPBIN找到「LIB」符號來它像:

00000036 REL32 00000000 515 [email protected][email protected]@[email protected]@[email protected][email protected][email protected]@@[email protected][email protected]@@[email protected]@[email protected][email protected]@@Z (void __cdecl boost_1_53_0::filesystem::path_traits::convert(char const *,char const *,class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> > &,class std::codecvt<wchar_t,char,int> const &)) 

是該參數的變化引起的問題?

編輯:
我想補充更多的細節:
以前我是用升壓1_48這是工作的罰款。 我發現,在升壓下path_traits 1_48符號與@ GDH @ 5 @@ž whicle升壓1_53與@ _WDH @ 5 @@ž
但仍試圖尋找synbol結束與結束結束@ GDH @ 5 @@ Z
這可能會導致錯誤?
如果是這樣,爲什麼它採取這種符號?

+0

如果增強庫建立在發佈模式下,你只能在發佈模式下鏈接 –

+0

@Thomas:我只在發佈模式下使用它 – Abhi

+0

然後,這可能有所幫助:http://stackoverflow.com/questions/8075315/ boost-filesystem-tutorial-wont-compile –

回答

0

除非您已經構建了Boost庫的所有可能的排列,否則有必要確保您的編譯器設置與用於構建Boost的設置相匹配。

相關的設置是:

  • 調試與發行
  • 靜態鏈接的運行與DLL
  • 單線程與多線程

boost_1_53_0_filesystem-mt.lib意味着名字Boost庫構建了發佈模式,多線程,DLL運行時。

這是你如何建立你的項目?

+0

Thx for support。 我建立提升1_48,那時它工作正常問題開始使用相同的代碼,一旦我開始使用提升1_53 我建立提升1_53同樣的方式,我建立了提升1_48 我hv編輯問題與更多細節 – Abhi

0

右鍵單擊 - >屬性 - >在常規選項卡 檢查是否

公共語言運行庫支持= 「沒有共同語言運行庫支持」

- >在C/C++ - >代碼生成 檢查是否

運行時庫多線程DLL(/ MD )

終於在菜單欄中去 - >工具 - >選項 - >項目和解決方案 - > VC++目錄 - >庫文件 檢查是否已給出,其中你提高librarus通常

的完整路徑

「\ boost_1_53 \臺\ LIB」

注意:設置路徑提到VS2008

+0

Thx支持。 我檢查了設置看起來很好 – Abhi

+0

@Ahi你是否弄明白了,或者你仍然卡住? – Navin

+0

哦等待我注意到你已經建立了多線程的提升,所以你試着將運行時庫改爲多線程(/ MT)? – Navin

0

你可以檢查你是否不使用64位編譯boost庫而不是32位(反之亦然)。這是使用boost :: filesystem時發生的事情。

+1

This應該是一個評論 – NathanOliver