Visual Studio 2010编译器找不到引用的包含

时间:2010-06-18 23:09:59

标签: visual-studio-2010 windows-7

这是我十多年来第一次摆弄Windows世界,所以这可能是一个简单的修复。但我完全陷入困境。

假设您有一个源目录,

mkdir helloworld && touch helloworld/helloworld.{h.cpp}

helloworld.cpp:

#include "helloworld.h"

using namespace std;

int main()
{
    cout << "Hello, World!" << endl;
    return 0;
}

helloworld.h:

#include <iostream>

现在你有一个看起来像的编译命令:

cl.exe helloworld/helloworld.cpp

我对标准行为的理解是,引用的预处理器查找包括外观

  • 在源文件的同一目录中
  • 以前打开过的文件
  • cli指定-I包含路径
  • 在INCLUDE环境中找到的路径

现在,这显然属于第一类,但我总是得到:

Z:\Projects\temp>cl helloworld\helloworld.cpp
Microsoft (R) C/C++ Optimizing Compiler Version 16.00.30319.01 for x64
Copyright (C) Microsoft Corporation.  All rights reserved.

helloworld.cpp
helloworld\helloworld.cpp(1) : fatal error C1083: Cannot open include file: 'helloworld.h': No such file or directory 

所以,当我输入这个时,我有一个随意的想法....“如果是因为我的项目是在共享文件系统上呢?”。

我将同一个项目复制到C:\并且它编译得很好!

有谁知道这里发生了什么?

2 个答案:

答案 0 :(得分:1)

运行procmon.exe(从sysinternals下载)。了解CL如何打开文件,共享模式等等。它会告诉您请求失败。您将能够看到它要求的共享选项。它应该使用SHARE_READ(拒绝写入)获取READ访问权限,这可能是您的设备不喜欢的。

答案 1 :(得分:1)

好的,我想出来了。它与vmware的共享文件夹有关。我的项目文件是vmware共享目录。要解决此问题,我必须直接映射Windows中的共享目录并在其中工作。

因此,对于名为“Projects”的vmware共享文件夹,您需要将\ vmware-host \ Shared Folders \ Projects映射到Y:或其他任何内容。

之后,它刚刚开始工作。