VC2008编译错误打开sbr文件(C2418 C1903 C2471)

时间:2009-05-06 18:24:51

标签: c++ visual-studio-2008

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

原始问题:

在设置我们的船编程冒险时,我必须设置源代码控制并修复项目文件以供团队使用。 (该项目之前只有一个人通过设置项目的快捷方式包括等工作)

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

  

致命错误C1083:无法打开   编译生成的文件:   '。\ Debug \ .sbr':权限   拒绝

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

  

RelativePath = “.. \ .. \源\的.cpp”

我在IDE中的sln文件中获得相同的错误表单,或者如果我使用sln文件调用msbuild。

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

最初创建SLN文件的人并不知道他是配置MSDev或让团队工作的向导。

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

此网址似乎没有有用的信息:

Fatal Error C1083 on MSDN

注意 - proj文件中仍有/仍然是硬编码路径,但我不看这些文件。他们主要是包括和lib dirs。我想我已将它们全部删除了。

我也遇到了这些错误:

  

.. \ .. \ Source \ .cpp:错误C2471:   无法更新程序数据库'\ debug \ vc90.pdb'

     

.. \ .. \ Source \ .cpp(336):致命   错误C1903:无法恢复   先前的错误;停止   汇编

     

.. \ .. \ Source \ .cpp(336):错误   C2418:无法删除浏览器文件:   \调试\ .SBR

6 个答案:

答案 0 :(得分:24)

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

<强>症状:

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

<强>原因:

如果满足以下所有条件,则会发生此问题:

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

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

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

    状态:

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

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

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

    适用于:

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

    尊重提交:

    “鱼”(David B. Trout)
    fish@infidels.org

    <强> P.S:

    欢迎你。 :)

答案 1 :(得分:4)

嗯。

也许:

http://social.msdn.microsoft.com/Forums/en-US/vclanguage/thread/0ceac3c6-62f6-4fdf-82e1-d41e1b4fcd20/

MS中有一个修补程序

http://code.msdn.microsoft.com/KB946040

http://support.microsoft.com/kb/946040

这可能是我的问题。我想它可能只在我拥有的一台机器上。

编辑:

我下载并运行了修补程序安装程序。它似乎修复了它。

答案 2 :(得分:1)

当我从磁盘中物理删除文件时,我得到同样的错误,但是将其留在VS中。在VS2005中它会提供更好的:找不到致命错误文件。我认为这是VS2008中的一个错误。上面提到的修补程序对我没有帮助。

答案 3 :(得分:1)

就我而言,我的病毒包(趋势科技)导致了所有问题。我将我的Dev文件夹添加到Ignore / White列表中以解决问题

答案 4 :(得分:0)

删除您的调试文件夹并构建您的项目。

答案 5 :(得分:0)

偶尔我的Visual Studio会突然决定这样的事情。我发现切换到发布,完全重建,然后切换回调试可能会有所帮助。