1

我在这个问题上敲了一段时间,所以我想我会发布。我有两个库项目,其中 Project2 在以下目录结构中使用/引用 Project1。

c:\code\Library\Project1
c:\code\Library\Project2

两者都是图书馆项目。我已将 Project2 中的路径包含在 Properties>Configuration Properties>C/C++>General>'Additonal Include Directories' 中。它读到..\Project1; %(AdditionalIncludeDirectories)

现在 Project2 中有一个文件,其中 #includes 文件存在于 project1 文件夹中。尽管已包含上述路径,但仍然出现错误:

1>c:\code\Library\Project2\MyTestDlg.cpp(6): fatal error C1083: Cannot open include file: 'GraphCtrl.h': No such file or directory

奇怪的是,如果我不更改原始项目名称,类似的设置也会起作用。这些项目最初位于它们链接良好的文件夹中。

c:\code\Library\Project1 1.0.0
c:\code\Library\Project2 1.0.0

我正在做的是从项目文件夹中删除最后一个版本名称(并再次将它们重新链接在一起),但这已成为一场噩梦!有什么建议么?

ps 我对此做了很多研究,这似乎与目录的长度有关,但我认为我在限制方面做得很好。以前较长的文件夹名称有效而较短的文件夹名称无效,这表明长度不是问题。

添加在:

以下是我在使用实际文件名时遇到的实际错误:问题之一是它仍然以全名引用旧库,GraphCtrlLib 1.0.0.0即使我已经完全删除它并且找不到它的更多引用。我这可能与此错误无关。

1>Build started 12/11/2012 5:16:02 PM.
1>C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.Targets(1200,9): warning : The referenced project '..\Graph\Graph.vcxproj' does not exist.
1>InitializeBuildStatus:
1>  Touching "Debug\ViewerLib.unsuccessfulbuild".
1>ClCompile:
1>  All outputs are up-to-date.
1>  OpenViewerDlg.cpp
1>c:\code\libraries\viewerlib\viewerdlg.cpp(6): fatal error C1083: Cannot open include file: 'GraphCtrl.h': No such file or directory
4

3 回答 3

3

终于解决了问题。我在记事本中打开了 .vcxproj 文件,并将旧路径的所有引用更改为新路径并保存。这解决了问题。

这是由于项目文件是只读的,VC2010 没有正确更新它。我一直在对项目属性进行更改,我可以通过回读它们来判断它们是我想要的,但是当我关闭项目并重新加载它时,它又回到了更改之前的状态。因此,这些更改从未得到应用。VS2010 并没有告诉我它不能保存或应用更改,但会接受它们并且永远不会应用它们!

于 2012-12-11T23:25:43.023 回答
3

我意识到这是一个老话题,但我想我会添加我的解决方案,以防未来的搜索者有相同的特定场景。

在我的例子中,附加的包含目录被定义为属性页中的用户宏(通过视图、属性管理器访问,然后右键单击项目、属性)。但是,尽管在那里更新了值,但实际上并没有保存属性页(即使 C++、命令行属性显示了正确的路径 (!))。必须从源代码管理中检出 .props 文件并保存它,然后重新构建 - 最后找到该目录中的包含文件。

于 2014-06-04T14:09:55.490 回答
3

添加这个答案,以防其他人需要它。我在 VS 2015 中遇到了同样的问题。

我通过编辑 .vcxproj 文件解决了这个问题。

在其中我搜索“路径”

然后将您的包含目录路径添加到它。

于 2016-12-17T16:42:43.987 回答