4

我有一个带有以下路径的视觉工作室解决方案 myvs.sln c:\dir1\dir2\dir3\myvs\myvs\myvs.sln:. 我在c:\dir1\dir2\dir3\boostxxx\.

我在 project->properties->c/c++->general:中有../..;../../boostxxx。在 boost 库中,包含文件具有以下语法:#include <boost/smart_ptr/shared_ptr>.

我的代码文件myfile.h位于c:\dir1\dir2\dir3\yy1\myfile.h. 在 myfile.h 中,我将 boost 库包括为:#include <boost/shared_ptr.hpp>. 我收到一条错误消息:c:\dir1\dir2\dir3\yyy1/myfile.h fatal error C1083 cannot open include file boost/shared_ptr.hpp.

问题是我应该怎么做才能纠正这个问题?

我还注意到编译器抛出的错误输出在 dir3 之前有“\”,然后更改为“/”。

很可能我不明白相对路径是如何工作的。另请注意,我只想引用相对路径而不是绝对路径。有人可以帮忙吗?我在使用 c++ Visual Studio 2010 的 Windows 平台上。

4

1 回答 1

3

搜索路径中的相对路径指#include带有指令的文件的目录编译器的当前目录,一些简单的测试现在显示。

"..\.." 上升了两个级别你的头文件编译器的当前目录而不是您的项目目录。

要解决此问题,请在 Visual Studio 项目目录中显式启动包含路径,如下(字面意思):

$(ProjectDir)..\..;$(ProjectDir)..\..\BoostXXX

关于正斜杠与反斜杠,请在 C++ 代码的指令中使用正斜杠#include,因为这是最可移植的。

使用正斜杠或反斜杠(但我更喜欢反斜杠,以便有一个单一的约定),您指的是 Windows 文件系统,例如在包含路径的设置中。

于 2012-11-14T01:20:21.343 回答