编译时无法创建临时文件
Posted
技术标签:
【中文标题】编译时无法创建临时文件【英文标题】: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,以管理员身份运行并且可以手动创建文件。问题是间歇性的,这使我怀疑它与句柄相关,或者如果操作系统正在对文件系统执行其他操作,则可能是超时。 【参考方案1】:我似乎从记忆深处的某个地方记得,删除由 Visual Studio 为项目创建的临时文件可以解决这个问题(直到它再次弹出)。
临时文件与您的项目同名。 (如果没有帮助,您的主目录中可能还有一些与 VC/VS 相关的内容。)
【讨论】:
我知道 Documents And Settings\Application Data 下有一些文件您可能想要删除。【参考方案2】:如果这没有帮助,请检查您的 TMP 环境设置是否不以分号结尾。它也应该是完全限定路径,而不是相对路径。
编辑:我在the internet 上找到了一个关于它的主题,据说如果您尝试包含目录而不是文件,您可能会触发同样的错误。
我假设您已经验证了这一点,但实际的 C:\Temp\SYS 文件夹是否具有正确的权限(即允许所有用户读取/写入其中的文件)?
【讨论】:
【参考方案3】:您还可以检查与c:\temp
和c:\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 的临时目录设置在其他地方,并告诉防病毒软件排除该目录。
【讨论】:
以上是关于编译时无法创建临时文件的主要内容,如果未能解决你的问题,请参考以下文章