Boost 库无法在 C++ 中工作,包含目录不起作用

Posted

技术标签:

【中文标题】Boost 库无法在 C++ 中工作,包含目录不起作用【英文标题】:Boost Library cannot get to work in C++, Include directories not working 【发布时间】:2017-07-14 01:51:05 【问题描述】:

我最近尝试在 C++ 14 中安装 boost 库,并添加了它的包含路径,例如:

解决方案资源管理器 > 项目名称 > 属性页 > VC++ 目录 > "C:\Program Files (x86)\Microsoft Visual Studio 14.0\boost\boost"

添加后我尝试编译:

#include <boost\variant.hpp>

在错误列表窗口中,我可以看到E1696 - cannot open source file "boost\variant.hpp",但我无法像以前那样编译。

然后我尝试添加像 "C:\Program Files (x86)\Microsoft Visual Studio 14.0\boost\boost\" 这样的反斜杠,仍然没有用。

我还阅读了this 的帖子并明确指定了它的目录,但甚至没有用。

我再次阅读了this 的帖子,并做了与给定答案完全相同的操作(因为我已经多次构建项目),但仍然没有成功。

但是,如果我包含如下库:

#include "C:\Program Files (x86)\Microsoft Visual Studio 14.0\boost\boost\variant.hpp"

现在编译器可以识别它,但是现在我可以在错误列表窗口中看到超过 100 个错误,这些错误指向 boost 库的头文件,而不是在包含 variant.hpp 的项目文件中。

所有这些错误都是E1696 - cannot open source file "boost\&lt;libraryname.hpp&gt;"E1696 - cannot open source file "boost\&lt;subdirs&gt;\&lt;some other files included in libraryname.hpp&gt;"

所以,如果我从项目的头文件中删除行 #include "C:\Program Files (x86)\Microsoft Visual Studio 14.0\boost\boost\variant.hpp",所有错误都会突然消失并且项目编译正常!现在没有任何错误!

无论如何我都希望 boost 能够工作,所以我可以在项目中使用它,但我无法手动编辑所有这些头文件并将 &lt;boost\... 更改为原始位置。

请帮我解决这个问题。

【问题讨论】:

您不应将 boost 放入您的 Visual Studio 安装中。接下来,您需要将包含 boost 的文件夹添加到您的包含文件夹中。 @drescherjm 我在尝试使用外部驱动器 (E:) 并在失败后执行此操作! "C:\Program Files (x86)\Microsoft Visual Studio 14.0\boost\boost" 是添加到包含路径的错误文件夹。它应该是“C:\Program Files (x86)\Microsoft Visual Studio 14.0\boost\” 我在尝试使用外部驱动器 (E:) 并失败后执行此操作! 您可能犯了相同的路径错误。 不要使用 VC++ 目录。尝试使用c++&gt;General&gt;Additional Include Directories 并使用C:\Program Files (x86)\Microsoft Visual Studio 14.0\boost,正如drescherjm 所说。此外,您需要在所有包含之间使用分号。 【参考方案1】: 确保下载并安装正确的 boost 版本。可以将其安装在 Visual Studio 目录中,但不建议这样做。我建议您使用来自here 的软件包之一。假设您使用 Visual Studio 2017并且您正在为 64 位开发,this 可能是适合您的正确软件包。 确保两者都做:将包含搜索路径和库搜索路径添加到您的 Visual Studio。

包含搜索路径应指向 boost-installation 根目录(包含Jamroot 文件和boost 子目录的目录)。库搜索路径应指向 boost 安装中正确的库子文件夹。这是以 lib64-msvc-**.*(或 lib32-msvc-*,如果您正在开发 32 位)开头的子文件夹之一。

上面二进制boost包的默认安装路径会安装到C:\local\boost_&lt;boost version&gt;。确保使用此安装目录中的路径并按照说明进行操作 here。

例子:

包括搜索路径:C:\local\boost_1_64_0

库搜索路径:C:\local\boost_1_64_0\lib64-msvc-14.1

【讨论】:

哇!您的安装包链接工作正常!非常感谢! ;-)

以上是关于Boost 库无法在 C++ 中工作,包含目录不起作用的主要内容,如果未能解决你的问题,请参考以下文章

我无法让这个字符串在 C++ 中工作

动态链接和 Python SWIG (C++) 在 C++ 中工作在 python 中失败

api调用在一种方法中工作但在另一种方法中不起作用---TypeError:无法读取未定义的属性'getResponse'

GLEW 无法在 Visual Studios 2010 中工作

枚举黑客在 C 中工作吗?如果是这样,它应该在 VisualStudio 2003 中工作吗?

无法使图表对象在自定义UIView中工作