对于一个看起来很愚蠢的问题感到抱歉:但是直到今晚,我从来没有使用过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现在编译得很好。
答案 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,你可能会得到答案。