【问题标题】:Unable to create temporary files while compiling编译时无法创建临时文件
【发布时间】:2008-12-31 12:52:47
【问题描述】:

我现在越来越多地发现,当我构建一个大型项目时,我收到以下错误。

致命错误 C1083:无法打开 编译器中间文件: 'C:\Temp\SYS\a03132ex':权限 拒绝

它出现在 Visual Studio 2003 和 VC6 中,我已经调查了可能的 MSDN 原因并画了一个空白。硬盘上有足够的空间,而且打开的其他程序也不多,我应该用完句柄。任何想法,或者是时候重新安装Windows了。顺便说一句,我正在运行 XP SP3,并且有两个大型 NTFS 硬盘,其中包含很多文件。

编辑:临时文件的名称发生了变化,我已经清除了整个 c:\temp 文件夹。

【问题讨论】:

  • 您是否以管理用户身份运行?还是受限用户?
  • 可以用windows explorer在c:\Temp\SYS中创建一个文本文件吗?
  • @EvilTeach,以管理员身份运行并且可以手动创建文件。问题是间歇性的,这使我怀疑它与句柄相关,或者如果操作系统正在对文件系统执行其他操作,则可能是超时。

标签: visual-c++ visual-studio-2005 visual-c++-6 compiler-construction


【解决方案1】:

我似乎从记忆深处的某个地方记得,删除由 Visual Studio 为项目创建的临时文件可以解决这个问题(直到它再次弹出)。

临时文件与您的项目同名。 (如果没有帮助,您的主目录中可能还有一些与 VC/VS 相关的内容。)

【讨论】:

  • 知道 Documents And Settings\Application Data 下有一些文件您可能想要删除。
【解决方案2】:

如果这没有帮助,请检查您的 TMP 环境设置是否不以分号结尾。它也应该是完全限定路径,而不是相对路径。

编辑:我在the internet 上找到了一个关于它的主题,据说如果您尝试包含目录而不是文件,您可能会触发同样的错误。

我假设您已经验证了这一点,但实际的 C:\Temp\SYS 文件夹是否具有正确的权限(即允许所有用户读取/写入其中的文件)?

【讨论】:

    【解决方案3】:

    您还可以检查与c:\tempc:\temp\sys 关联的权限(如果编译会话之外确实存在 sys)

    cacls c:\temp
    

    另外,(如suggested here),尝试在高级选项下设置编译器标志 -Bd 并检查编译器中的参数。也许您打算指定一个路径并最终编译一个不存在的文件?

    【讨论】:

      【解决方案4】:

      保持您的临时文件位置简单,例如,当我将项目从笔记本电脑复制到办公室 PC 时,VS2003 项目没有编译。“tmp”系统变量指向 %USERPROFILE%/TEMP。 Visual Studio 2003 给出了一些“致命错误 C1083:无法打开编译器中间文件:”错误

      我在 C 盘上新建了一个 Temp 文件夹,并将系统变量 TMP 更改为“C:/TEMP”。重新编译程序,Voilà 没有错误!

      【讨论】:

        【解决方案5】:

        不要点击编译器中的Rebuild按钮,只点击Build按钮 - 这解决了我的问题

        【讨论】:

          【解决方案6】:

          我遇到了完全相同的问题。在构建项目时禁用防病毒软件解决了这个问题。一个可能的永久解决方案是将 VS 的临时目录设置在其他地方,并告诉防病毒软件排除该目录。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2022-07-10
            • 2013-05-05
            • 1970-01-01
            • 2013-03-22
            • 2020-01-19
            • 2018-02-24
            相关资源
            最近更新 更多