C++ Boost NuGet无法打开文件,Visual Studio 2015。

4
我正在制作一个C++项目(对C ++相当新),它需要所谓的“boost”库。 我以为我可以通过NuGet添加它来使我的生活变得更轻松...(添加了#include <boost\date_time.hpp>),但现在我遇到了这个错误:

Error LNK1104 cannot open file 'libboost_date_time-vc141-mt-gd-1_65_1.lib'

问题是什么?

你知道吗,由于荒谬的磁盘空间要求,我从来没有让它正常工作过。 - sehe
3个回答

7
根据错误信息,您应将`libboost_date_time-vc141-mt-gd-1_65_1.lib`库目录添加到项目配置中。此`.lib`包含在NuGet包`boost_date_time-vc140`或`boost_date_time-vc141`中。
由于您正在使用Visual Studio 2015,您只需要将NuGet包`boost_date_time-vc140`安装到您的项目中,NuGet会自动将`libboost_date_time-vc141-mt-gd-1_65_1.lib`库目录添加到您的项目配置中。安装完成后,该错误将得到解决。
另外,既然您在Visual Studio 2015中使用了`boost`库,建议您使用boost-vc140,它包含了许多依赖项,因此您无需手动添加它们。

enter image description here

希望这有所帮助。

1

您需要将boost库目录添加到项目配置中,在项目菜单中选择属性。

在属性窗格中,找到“VC++目录”,在“库目录”中添加\lib64-msvc-12.0(32位版本则将64更改为32)。

我建议您通过“视图”->“其他窗口”->“属性管理器”进行操作,这样将为所有未来的项目设置好。


1
我甚至找不到我的 \lib64-msvc-12.0 文件在哪里... 在我的 packages 文件夹中,我有 \packages\boost.1.65.1.0\lib\native\include\boost。 - pete

0
你出现链接错误的原因是因为你安装了仅包含头文件的 NuGet "Boost" 包。然而,由于不幸的设计决策,这个仅包含头文件的包也包含了一些非仅包含头文件的 Boost 库的头文件,比如 datetime。如果设计更好的话,你应该在编译时就能够得到错误提示。
"Boost.vc120" 和 "Boost.vc140" 包都包含了既有头文件库又有常规编译库;它们之间的区别在于所使用的编译器。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接