2011-02-23 45 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