Boost 1_44包括不起作用

时间:2010-08-24 04:50:51

标签: visual-studio-2010 boost

对于一个看起来很愚蠢的问题感到抱歉:但是直到今晚,我从来没有使用过boost,而且我发现配置它似乎比应该更难使用。

我今晚想要实验。所以我下载了zip文件,并将其解压缩到这里的目录:

F:/ boost_1_44_0

然后我在visual studio 2010中创建了一个空的c ++项目(也没有使用pch)。所以我想做的就是包含一个头文件。但即便是像这样的愚蠢似乎也行不通。现在我已经使用视觉工作室多年了,虽然在工作中我们仍然坚持vs 2008(这是另一个故事)。所以你通常做的是设置一个包含目录,然后你可以随意包含文件吗?

所以我设置全局include目录以包含boost root。即物业经理 - >我的配置(debug | win32) - > Microsoft.Cpp.Win32.user - >共同属性 - > C ++目录 - >包括目录。在那里,我将路径添加到f:/ boost_1_44_0。

我还去了项目属性并设置项目的C ++ include目录,指向vs 2008中的boost root。

然后我添加了一个如此愚蠢的包含声明:

#include <boost/lambda/lambda.hpp>

但是,令人惊讶的是它无法编译!出现以下错误:

  

错误1错误C1083:无法打开包含文件:'boost / type_traits / transform_traits.hpp':没有这样的文件或目录f:\ boost_1_44_0 \ boost \ lambda \ core.hpp 25 1 test_boost

当我双击它时,它会在f:\ boost_1_44_0 \ boost \ lambda \ core.hpp中打开,并带我到这一行:

#include "boost/type_traits/transform_traits.hpp"

所以我不知道发生了什么。视觉工作室是不是没有提供我设置的全局包含路径?似乎core.hpp中的include指令应该使用尖括号而不是引号。

如果我做错了什么?

编辑: !已解决!!

在我没有解压缩所有文件之前。我不知道发生了什么。所以我重新下载了zip文件,并再次解压缩。这次zip文件需要更长时间才能解压缩,并且它提取了更多文件:包括丢失的文件。 问题解决了,我的hello world app现在编译得很好。

2 个答案:

答案 0 :(得分:3)

编译器在查找头文件时的行为是为<>""变体定义的实现。

但是,根据VC2010的this page,引用的表单会显示尖括号形式的超集,所以我不确定是不是问题。

我想问一下这个文件是否确实存在是个愚蠢的问题?

f:\boost_1_44_0\boost\type_traits\transform_traits.hpp

所以,有几项调查工作:

  • 确保f:\boost_1_44_0\boost\type_traits\transform_traits.hpp存在。
  • 尝试更改您的顶级包含以使用引号。
  • 尝试更改f:\boost_1_44_0\boost\lambda\core.hpp中的包含以使用尖括号。
  • 确保你为最后两个尝试所有四种可能性。
  • f:是网络驱动器吗?如果你把所有内容都放在c:上会怎样?

最后一个是以防万一Windows正在做一些恶作剧: - )

答案 1 :(得分:2)

虽然这有点矫枉过正,但学习使用SysInternals' Process Monitor会随着时间的推移而有所回报。它将显示实际打开的文件以及尝试失败的文件。看看Visual Studio尝试从哪里读取transform_traits.hpp,你可能会得到答案。