这是我十多年来第一次摆弄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
我对标准行为的理解是,引用的预处理器查找包括外观
现在,这显然属于第一类,但我总是得到:
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:\并且它编译得很好!
有谁知道这里发生了什么?
答案 0 :(得分:1)
运行procmon.exe(从sysinternals下载)。了解CL如何打开文件,共享模式等等。它会告诉您请求失败。您将能够看到它要求的共享选项。它应该使用SHARE_READ(拒绝写入)获取READ访问权限,这可能是您的设备不喜欢的。
答案 1 :(得分:1)
好的,我想出来了。它与vmware的共享文件夹有关。我的项目文件是vmware共享目录。要解决此问题,我必须直接映射Windows中的共享目录并在其中工作。
因此,对于名为“Projects”的vmware共享文件夹,您需要将\ vmware-host \ Shared Folders \ Projects映射到Y:或其他任何内容。
之后,它刚刚开始工作。