繁体   English   中英

即使添加了“ incl。incl。”,VS2003也找不到.h文件。 迪尔斯”

[英]VS2003 can't find .h file even after addition to “additional incl. dirs”

我的文件需要在另一个项目中包含blah.h。 我尝试将保存blah.h文件的目录添加到

Project -> Project Properties -> Additional include directories

但我不断收到“ C1083:无法打开包含文件:blah.h:没有此类文件或目录”。 我尝试了文件夹blah.h的绝对路径和相对路径,但均未成功。

我使用的是Visual Studios 2003。

#include "blah.h"

有什么建议么?

使用以下命令获取构建(或至少构建的这一部分):

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

如果/当VS停止抱怨无法找到blah.hblah.h n #include使用的路径剪切-n-粘贴到“其他include目录”中。 请记住,“其他包含目录”字段应使用分号分隔目录。

另外,请确保为所有适当的构建配置和平台设置“其他包含目录”属性(“项目”属性页对话框顶部的下拉菜单)。 由于打开对话框时仅选择了“活动”配置,因此我经常发现自己只为“调试” /“ Win32”配置设置了一个选项,然后再想一秒钟,当我在切换到“发布”配置或“ x64”。

对于此类问题,我使用Microsoft提供的免费实用程序ProcessMonitor 除其他外,它记录对文件的访问。 筛选blah.h,查看Visual Studio真正使用的路径,然后根据需要调整“其他包含”。

好的,这是我的问题,我想出了解决方案:

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

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

解决方案是将Foo.hFoo.cppBar.h放入他们自己的项目NewProj中,并创建一个静态库。 其他想要使用Child类的项目只需包含NewProj.lib ,将路径添加到NewProj.lib ,并将include路径添加到Bar.h。

如果已将“ blah.h”目录的路径输入为相对路径,请注意,VS2008会将这些路径解释为相对于包含.vcproj项目文件的目录的路径。 因此,您需要弄清楚那将是什么。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM