2011-02-23 43 views
0

我正在使用VS 2008並希望使用boost :: asio庫。 我可以得到這個工作在一個新的項目(我想包括boost/bind.hpp和boost/asio.hpp),但在現有的項目中,我得到這個錯誤:Visual Studio鏈接器找不到libboost_system

致命錯誤LNK1104:Datei「libboost_system -vc90-mt-sgd-1_46.lib「找不到。

我在boost目錄下找不到這個文件,但是這個:libboost_system-vc90-mt-gd-1_46.lib(gd代替sgd)這是什麼意思?

謝謝!

+0

什麼解決了你的問題? – karlphillip 2011-02-24 17:00:06

回答

0

這意味着您必須轉到項目屬性並更改當前包含的用於鏈接的增強庫的名稱。如果你有libboost_system-vc90-mt- gd -1_46.lib,你應該使用它。

Configuration Properties => Linker => Input => Additional dependencies 
+2

對於某些編譯器(而VC++ 2008就是其中之一),Boost.Asio自動鏈接('#pragma link'),所以不需要添加額外的庫。 – 2011-02-23 16:46:13

+0

@eugen +1正確,-1與#pragma註釋lib混淆:) - VS不支持#pragma鏈接。 http://msdn.microsoft.com/en-us/library/d9x1s805(v=VS.100).aspx – 2011-02-23 21:28:59

+0

@Hertzel:謝謝你的澄清和鏈接,我真的搞混了他們。 – 2011-02-23 21:38:04

1

Boost names its libraries based on what options were used in compiling them。例如,「mt」意味着「多線程運行時」;我相信你可以弄清楚「vc90」是什麼意思(比如說,「gcc4」)。我認爲「s」的意思是「靜態」。

您的解決方案是首先確保您使用的是與構建庫相同的選項,然後在項目選項中更改要鏈接的文件的名稱。

2

我假設你已經使用了BoostPro的Boost安裝程序。如果是這樣重新安裝它,並確保您選擇Multithread Debug, static runtime