The solutions to the error such as "PRJ0008" or "C2471" or "C1083" or "D8022" or "LNK1103"

本文介绍了解决Visual C++ 2005及2008版本中出现的“PRJ0008”、“C2471”等编译错误的方法。这些问题通常发生在多个项目并行构建时,尤其是在多核系统上。文章提供了多种解决方案,包括调整项目配置、禁用并行构建等。

Title: You may receive a "PRJ0008" or "C2471" or "C1083" or "D8022" or "LNK1103" or similar error message when you try to build a solution in Visual C++

Symptoms:

  • D8022 : Cannot open 'RSP00000215921192.rsp'
  • PRJ0008 : Could not delete file 'vc90.idb'.
  • C1083 : Cannot open program database file 'vc90.pdb'
  • C2471 : Cannot update program database 'vc90.pdb'
  • LNK1103 : debugging information corrupt.

Cause:

This problem occurs when all of the following conditions are true:

  1. You have a solution with more than one project in it.
  2. Two or more of the projects are not dependent on each other.
  3. You have parallel builds enabled. (Tools -> Options: Projects and Solutions, Build and Run: "maximum number of parallel project builds" is set to a value greater than 1)
  4. You are building on a system with multiple CPUs (cores).
  5. Two or more of the non-dependent projects are configured to use the same Intermediate and/or Output directory.
  6. A specific race condition in mspdbsrv.exe remains uncorrected.

Resolution:

To resolve the problem do one or more of the following:

  • Reconfigure the non-dependent projects to specify an Intermediate and Output directory that is different from one another, e.g. Output Directory = "$(SolutionDir)$(ProjectName)\$(ConfigurationName)", Intermediate Directory = "$(OutDir)".
  • Adjust your solution's project dependencies (Project -> Project Dependencies...) so that each is dependent on another.
  • Disable parallel builds.
  • Add the "/onecpu" boot option to your boot.ini file.
  • Change you BIOS settings to enable/use only one CPU.
  • File a problem report with Microsoft Technical Support and keep bugging the crap out of them until they eventually fix mspdbsrv.

Status:

The problem is a combination of both a user project configuration error as well as a race condition in Microsoft's "mspdbsrv.exe" utility that does not properly handle more than one thread calling it at the same time for the same file resulting in the file's HANDLE being left open.

Additionally Visual Studio itself and/or its build system (VCBUILD and/or MSBUILD) (or all three!) should be made smart enough to detect and alert the user of such user errors so that corrective action can be taken.

This problem has been around for a LOOOOOONG time.

Applies to:

  • Microsoft Visual C++ 2005
  • Microsoft Visual C++ 2008
  • Others?
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值