2011-05-06 56 views
0

我有需要在另一个项目中包含blah.h的文件。我试着将持有的blah.h文件的目录,以甚至在添加到“其他包含目录”之后,VS2003仍找不到.h文件

Project -> Project Properties -> Additional include directories 

,但我不断收到一个“C1083:无法打开包含文件:blah.h:没有这样的文件或目录”。我已经尝试绝对和相对路径到文件夹住房blah.h没有成功。

我使用视觉工作室2003年,我的包含语句看起来像

#include "blah.h" 

有什么建议?

+0

你的“附加包含目录”属性是什么样的? – 2011-05-06 22:24:31

+0

感谢您关注此事。在星期一之前,我将无法访问带有代码的计算机,届时我会回复您。 – jok3rnaut 2011-05-08 04:07:56

回答

1

获取版本(或至少生成的该部分)利用工作:

#include "c:/path/to/blah.h" 

如果/当VS停止抱怨不能够找到blah.h,切正粘贴使用的路径将#include纳入“其他包含目录”中。请记住,“附加包含目录”字段应该使用分号分隔目录。

此外,请确保为所有适当的构建配置和平台(项目属性页面对话框顶部的下拉列表)设置了“其他包含目录”属性。由于对话框打开时只选择“Active”配置,所以我经常发现自己只为“Debug”/“Win32”配置设置了一个选项,然后想知道在切换到“释放”配置或“x64”。

+0

谢谢。虽然这不是直接的解决方案,但它帮助我提出了最终的解决方案(重新设计了项目结构)。 – jok3rnaut 2011-05-09 18:16:48

+0

@ jok3maut:如果没有太多的麻烦,我认为描述实际问题和解决方案的自己的答案(甚至是编辑问题)对于任何人在搜索中碰到这个问题都是很好的。 – 2011-05-09 18:31:25

+0

好点。我已在下面发布我的解决方案。 – jok3rnaut 2011-05-10 15:24:07

0

如果您已经将“blah.h”目录的路径作为相对路径输入,请注意,VS2008将解释与保存.vcproj项目文件的目录相关的路径。所以你需要弄清楚会是什么。

如果您的C++文件是“C:\ myprogram \ source \ foo.cpp”并且您的包含文件是“C:\ myprogram \ includes \ blah.h”,则不足以提供包含“ .. \包括”。你必须弄清楚你的项目文件在哪里。如果它是“C:\ myprogram \ build \ mysolution \ myprogram \ myprogram.vcproj”,那么包含路径必须是“.. \ .. \ .. \ includes”。

1

对于这样的问题,我使用ProcessMonitor,这是微软提供的免费工具。除此之外,它还记录对文件的访问。在blah.h上过滤,查看Visual Studio实际使用的路径,然后根据需要调整“Additional Includes”。

1

确定这里是我的问题和解决方案我想出了:

我在VS2003多项目解决方案。在一个项目中,我有Bar.h定义的模板类儿童从非模板类家长在继承foo.h中有一个静态成员some_mutex在其中声明。这意味着我需要在Foo.cpp中定义some_mutex

当我试图在其他项目的文件中包含Bar.h时,就会出现问题。 other.vcproj。没有添加包含路径到Bar.hother.vcproj我会得到一个C1083错误,因为编译器找不到的定义。但是,当我加入Bar.h的包括以other.vcproj我会得到一个LNK2001错误some_mutex因为Foo.cpp中在不同的项目,并没有得到包括/编译路径。这意味着some_mutex未定义,并导致LNK2001错误。

的解决办法是把了foo.hFoo.cpp中,并Bar.h在自己的项目取名为NewProj并创建一个静态库。是想用类儿童只需要包括NewProj.lib其他项目,该路径添加到NewProj.lib,以及包括路径添加到Bar.h

相关问题