c++ - VC2008 编译器错误打开 sbr 文件 (C2418 C1903 C2471)

标签 c++ visual-studio-2008

编辑:请参阅下面的修补程序答案。

原始问题:

在为我们的船编程冒险进行设置时,我必须设置源代码控制并修复项目文件以供团队使用。 (该项目以前只有一个人在设置项目包括等方面采取捷径)

我正在修复那些 SLN 和 Proj 文件。当尝试在外部 USB 驱动器上进行构建时(我没有在主硬盘驱动器上尝试过),我遇到了奇怪的错误(很多错误用于各种文件):

fatal error C1083: Cannot open compiler generated file: '.\Debug\.sbr': Permission denied

这些文件在vcproj文件中被引用,相对路径用双引号括起来:

RelativePath="..\..\Source\.cpp"

我在 IDE 中的 sln 文件中或如果我使用 sln 文件调用 msbuild 时会收到相同的错误表单。

这些文件是一些 sln 文件(项目)的“共享”。

最初创建 SLN 文件的人并不以擅长配置 MSDev 或使事情为团队工作而闻名。

这是引用源文件的方式的问题吗?有关如何解决这些问题的任何建议?

这个网址似乎没有有用的信息:

Fatal Error C1083 on MSDN

注意 - proj 文件中有/仍然是硬编码路径,但我没有看到这些文件的路径。它们主要用于 include 和 lib 目录。我想我把它们都删除了。

我也收到这些错误:

..\..\Source\.cpp : error C2471: cannot update program database '\debug\vc90.pdb'

..\..\Source\.cpp(336) : fatal error C1903: unable to recover from previous error(s); stopping compilation

..\..\Source\.cpp(336) : error C2418: cannot delete browser file: .\Debug\.sbr

最佳答案

标题:当您尝试在 Visual C++ 中构建解决方案时,您可能会收到“PRJ0008”或“C2471”或“C1083”或“D8022”或“LNK1103”或类似的错误消息

症状:

  • D8022:无法打开“RSP00000215921192.rsp”
  • PRJ0008:无法删除文件“vc90.idb”。
  • C1083 : 无法打开程序数据库文件 'vc90.pdb'
  • C2471:无法更新程序数据库“vc90.pdb”
  • LNK1103:调试信息损坏。

原因:

当满足以下所有条件时会出现此问题:

  1. 您有一个包含多个项目的解决方案。
  2. 两个或多个项目不相互依赖。
  3. 您已启用并行构建。 (工具 -> 选项:项目和解决方案,构建和运行:“最大并行项目构建数”设置为大于 1 的值)
  4. 您正在一个具有多个 CPU(内核)的系统上构建。
  5. 将两个或多个非依赖项目配置为使用相同的中间和/或输出目录。
  6. mspdbsrv.exe 中的特定竞争条件仍未纠正。

分辨率:

要解决问题,请执行以下一项或多项操作:

  • 重新配置非依赖项目以指定彼此不同的中间和输出目录,例如输出目录 = "$(SolutionDir)$(ProjectName)\$(ConfigurationName)",中间目录 = "$(OutDir)"。
  • 调整解决方案的项目依赖项(Project -> Project Dependencies...),使每个依赖项都依赖于另一个。
  • 禁用并行构建。
  • 将“/onecpu”引导选项添加到您的 boot.ini 文件中。
  • 更改您的 BIOS 设置以启用/仅使用一个 CPU。
  • 向 Microsoft 技术支持提交问题报告,并不断向他们吐槽,直到他们最终修复 mspdbsrv。

状态:

问题是用户项目配置错误以及 Microsoft 的“mspdbsrv.exe”实用程序中的竞争条件的组合,该实用程序无法正确处理多个线程同时为同一文件调用它,从而导致文件的 HANDLE 保持打开状态。

此外,Visual Studio 本身和/或其构建系统(VCBUILD 和/或 MSBUILD)(或所有三个!)应该足够智能,以检测并提醒用户此类用户错误,以便采取纠正措施。

这个问题已经存在很长时间了。

适用于:

  • Microsoft Visual C++ 2005
  • Microsoft Visual C++ 2008
  • 其他?

恭敬提交:

“鱼”(大卫·B·特劳特)
fish@infidels.org

附言:

不客气。 :)

关于c++ - VC2008 编译器错误打开 sbr 文件 (C2418 C1903 C2471),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/830980/

相关文章:

c++ - 使用模板的选择排序函数没有匹配的函数调用(C++)

c++ - 推广还是不推广——这是一个问题

c++ - 使用带有 "large"二维矩阵的 C++ 的 MPI_Scatterv/Gatherv 会抛出 MPI 错误

visual-studio - Visual Studio 安装和部署 : Adding Pre Requisits

c++ - 非事件 #ifdef block 中的编译器错误

c++ - 根据模板参数将函数标记为 noexcept

c++ - std::uninitialized_fill() 和 std::get_temporary_buffer()

c - 如何使格式文档快捷方式适用于 Visual Studio 2008 中的 C 源文件?

c# - RadGrid 双击

asp.net - 为什么我的 "Temporary ASP.NET Files"中的 ASP.NET DLL 在重建时没有得到更新?