2015-04-29 36 views
11

我一直在尝试几天以获得提升,以使用我的Visual Studio 2013 Premium安装。我试着用Zip安装,现在用NuGet。这两种方法都让我看到了链接器错误的相同点。VS2013 Boost使用NuGet

错误:1> LINK:致命错误LNK1104:无法打开文件 'libboost_system-VC120-MT-GD-1_57.lib'

我通过升压邮件列表看了一下,发现有人张贴了类似的问题,但那是2012年以来boost_1_54_0之类的事情,所以VS2013或者1_58_0都没什么关系。

我也看过一些论坛帖子,包括SO,但他们都没有我遇到的同样的问题。要么这样,要么他们根本没有答复。

我不能真正辨别错误显示的任何标志,因为这是我第一次使用除STL库或我自己的标题以外的任何其他标志。

任何和所有的帮助,将不胜感激,让我知道如果有任何其他的额外信息,将是有益的。

回答

15

我怀疑你安装简单地命名为 “提升” 的NuGet包。这似乎包含所有的Boost头文件,但没有编译的库。如果您只想使用仅包含头文件的Boost库(即大多数库),那很好。

你真正想要的是名为“boost-vc120”的包(vc120是指VC++ 12.0,它是VS2013附带的VC++版本)。这也有所有的图书馆。您会注意到安装需要很长时间。

无论哪种情况,NuGet都会负责设置所有必要的VC++目录设置。不需要进一步的配置。

+0

我刚安装了boost-vc120软件包,它似乎工作。我最初避免它,因为我误解了描述,并认为我看到“Windows XP”。我现在的解决方案都提升了boost-vc120软件包。这是否会影响任何东西,如果我删除了常规的提升? – user3857017

+0

@ user3857017 - 删除提升应该没有效果,但如果确实如此,您可以随时删除boost-vc120,然后重新安装它。 – Ferruccio

+0

好的。我只是问,因为提升是一个非常大的包裹,只是无缘无故坐在那里。 – user3857017

0

文件libboost_system-vc120-mt-gd-1_57.lib是否存在于您的硬盘上?

如果是,您是否将.lib添加到链接器/输入/附加依赖项?

enter image description here

+0

我从来没有想过要去那里,只是上课,但当我回来时,我会检查。我目前只是使用任何NuGet设置和安装与提升。 – user3857017

+1

库文件名不需要添加到该列表中。在MSVC上,boost头文件使用'#pragma comment(lib,“...”)指令自动指定库名称。最重要的是将包含所有boost'.lib'文件的*目录*添加到'Linker - > General - > Additional Library Directories'。 – bogdan

+0

我没有设法找到该文件,但我确实通过另一个回复中的另一个boost包得到了它的工作。虽然谢谢! – user3857017

2

Boost NuGet包的结构是here。您可以使用boost-vc120,但它会将所有boost库下载到您的项目中。因此,如果您想节省磁盘空间,请使用boost软件包,该软件包提供了头文件和特定的二进制软件包。在你的情况下,它是boost_system-vc120

由于二进制包(如boost-vc120/boost_system-vc120)依赖于它,所以无法删除boost包。

+1

'boost-vc120'将下载所有的boost库,但它只会链接您在项目中实际使用的库。 Boost利用其头文件中的VC++'#pragma comment(lib)'指令来指定需要链接的库。 – Ferruccio

+0

当然,我修复了答案。谢谢。 –