多个错误C1083,尽管路径和权限正确

Multiple errors C1083 despite the correctness of path and rights

本文关键字:路径 权限 错误 C1083      更新时间:2023-10-16

我正在使用VS2017工具集v141在Windows 10 x64中编译opencv(master)。VS项目由cmake生成。

我有多个错误,例如:

c1xx:致命错误C1083:无法打开源文件:"I:\opencv-master\opencv\3rdparty\openexr\IlmThread\IlmThreadWin32.cpp":没有这样的文件或目录[I:\opencv-master\build\3rdparty\openexr\IlmImf.vcxproj]

然而,我不明白这是怎么发生的,因为:

  • 路径是绝对路径
  • 文件确实存在
  • 读取访问权限正确

此外,在IlmImf.vcxproj中,引用了许多文件,但错误中只提到了其中的少数文件。这只是ClCompile标记中的文件。

例如,对于Half中的文件,C1083错误中仅引用half.cpp

<ItemGroup>
<ClInclude Include="I:opencv-masteropencv3rdpartyopenexrHalfeLut.h" />
<ClInclude Include="I:opencv-masteropencv3rdpartyopenexrHalfhalf.h" />
<ClInclude Include="I:opencv-masteropencv3rdpartyopenexrHalfhalfFunction.h" />
<ClInclude Include="I:opencv-masteropencv3rdpartyopenexrHalfhalfLimits.h" />
<ClInclude Include="I:opencv-masteropencv3rdpartyopenexrHalftoFloat.h" />
<ClCompile Include="I:opencv-masteropencv3rdpartyopenexrHalfhalf.cpp" />

以下是完整的vcxproj文件:https://github.com/mprevot/C1083/blob/master/IlmImf.vcxproj


编辑

我可以在VS2017中打开项目中的每个cpp文件。对于各个cpp文件,右键单击+compile(alt+F7)会导致相同的错误。但其中很少有也存在E1696错误

严重性代码描述项目文件行抑制状态错误(活动)E1696无法打开源代码文件"I:\OPENCV-MASTER\OPENCV\3RDPARTY\OPENEXR\ILMTHREAD\ILMTHREADMUTEX.CPP"IlmImf 0
严重性代码描述项目文件行抑制状态错误C1083无法打开源文件:"I:\opencv-master\opencv\3rdparty\openexr\IlmThread\IlmThreadMutex.cpp":没有此类文件或目录IlmImf I:\opencv-master\build\3rdparty\openexr\c1xx 1

命令行是:

/MP /GS /TP /W3 /wd"4127" /wd"4251" /wd"4324" /wd"4275" /wd"4512" /wd"4589"
/wd"4018" /wd"4099" /wd"4100" /wd"4101" /wd"4189" /wd"4245" /wd"4305"
/wd"4389" /wd"4701" /wd"4702" /wd"4706" /wd"4800" /wd"4334" /wd"4244"
/wd"4267" /wd"4456" /Gy /Zc:wchar_t
/I"I:opencv-masteropencv3rdpartyopenexrIlmImf"
/I"I:opencv-masteropencv3rdpartyopenexrImath"
/I"I:opencv-masteropencv3rdpartyopenexrIlmThread"
/I"I:opencv-masteropencv3rdpartyopenexrIex"
/I"I:opencv-masterbuild3rdpartyzlib"
/I"I:opencv-masteropencv3rdpartyzlib"
/I"I:opencv-masterbuild3rdpartyopenexr"
/I"I:opencv-masteropencv3rdpartyopenexrHalf"
/I"I:opencv-masterbuild" /Gm- /O2 /Ob2
/Fd"I:opencv-masterbuild3rdpartylibReleaseIlmImf.pdb"
/Zc:inline /fp:precise /D "WIN32" /D "_WINDOWS" /D "_CRT_SECURE_NO_DEPRECATE"
/D "_CRT_NONSTDC_NO_DEPRECATE" /D "_SCL_SECURE_NO_WARNINGS" /D "NDEBUG"
/D "_VARIADIC_MAX=10" /D "CMAKE_INTDIR="Release"" /D "_MBCS"
/errorReport:prompt /WX- /Zc:forScope /GR /Gd /Oi /MD /Fa"Release/"
/EHa /nologo /Fo"IlmImf.dirRelease" /Fp"IlmImf.dirReleaseIlmImf.pch"
/diagnostics:classic

和附加选项/bigobj

当我git pull/clone使用linux版本(WSL),但不使用Windows版本(与Visual Studio打包)时,会发生此问题。它可能是一个不可打印的字符或其他什么,因为在opencvmaster 4.0.0开始时,linuxgit并没有发生这种情况。

我不确定这是否应该在WSL项目中报告。任何提示都是受欢迎的。