我有一个文件需要在另一个项目中包含blah.h。我已经尝试将保存blah.h文件的目录添加到
Project -> Project Properties -> Additional include directories
但我一直得到一个“C1083:无法打开包含文件:blah.h:没有这样的文件或目录”。我已经尝试了绝对和相对路径到文件夹blah.h没有成功。
我正在使用Visual Studios 2003.我的include语句看起来像
#include "blah.h"
有什么建议吗?
答案 0 :(得分:1)
使用以下命令获取构建(或至少构建的这一部分)
#include "c:/path/to/blah.h"
如果/当VS停止抱怨无法找到blah.h
时,请将#include
中使用的路径剪切粘贴到“其他包含目录”中。请记住,“附加包含目录”字段应该用分号分隔目录。
此外,请确保为所有适当的构建配置和平台设置“附加包含目录”属性(“项目”属性页对话框顶部的下拉列表)。由于对话框打开时只选择了“Active”配置,我经常发现自己只为“Debug”/“Win32”配置设置了一个选项,然后想知道切换到切换后出现错误时出现错误的一秒钟“释放”配置或“x64”。
答案 1 :(得分:1)
对于这样的问题,我使用了来自Microsoft的免费实用程序ProcessMonitor。除此之外,它还记录对文件的访问。过滤blah.h,查看Visual Studio正在使用的路径,然后根据需要调整“其他包含”。
答案 2 :(得分:1)
好的,这是我的问题和我提出的解决方案:
我在VS2003中有一个多项目解决方案。在一个项目中,我在 Bar.h 中定义了模板类 Child ,它继承自 Foo中的非模板类 Parent 。 ħ即可。 父在其中声明了静态成员 some_mutex 。这意味着我需要在 Foo.cpp 中定义 some_mutex 。
当我尝试在其他项目的文件中包含 Bar.h 时出现问题,例如的 other.vcproj 即可。如果没有在 other.vcproj 中添加 Bar.h 的包含路径,我会收到C1083错误,因为编译器找不到 Child的定义。但当我添加 Bar.h 的包含 other.vcproj 的路径时, some_mutex 会出现LNK2001错误,因为 Foo .cpp 是一个不同的项目,没有被包含/编译。这意味着 some_mutex 未定义,导致LNK2001错误。
解决方案是将 Foo.h , Foo.cpp 和 Bar.h 放在他们自己的项目中 NewProj < / strong>并创建一个静态库。想要使用 Child 类的其他项目只需要包含 NewProj.lib ,添加 NewProj.lib 的路径,然后添加包括 Bar.h 的路径。
答案 3 :(得分:0)
如果您已将“blah.h”目录的路径作为相对路径输入,请注意VS2008会解释相对于包含.vcproj项目文件的目录的路径。所以你需要弄清楚它会是什么。
如果你的C ++文件是“C:\ myprogram \ source \ foo.cpp”并且你的包含文件是“C:\ myprogram \ includes \ blah.h”,那么提供“。”的包含路径是不够的。 \包括”。您必须弄清楚项目文件的位置。如果它是“C:\ myprogram \ build \ mysolution \ myprogram \ myprogram.vcproj”那么包含路径必须是“.. \ .. \ .. \ includes”。