什么是与VC2008项目相关的C2471,C1083错误以及如何纠正它们

时间:2010-11-18 16:11:55

标签: c++ visual-studio-2008 visual-c++

我有一个非常复杂的VC2008项目。为了理解它的内部工作原理,我试图简化它,现在我得到大多数文件的以下类型的289个错误:

错误5错误C2471:无法更新程序数据库'c:\ users \ ryan \ documents \ visual studio 2008 \ projects \ vc \ myinfo \ cli \ debug \ vc90.pdb'c:\ users \ ryan \ documents \ visual studio 2008 \ projects \ vc \ myinfo \ cli \ mediainfo \ file__analyze_buffer_minimizesize.cpp 1 CLI

错误6致命错误C1083:无法打开程序数据库文件:'c:\ users \ ryan \ documents \ visual studio 2008 \ projects \ _vc \ myinfo \ cli \ debug \ vc90.pdb':没有这样的文件或目录c :\ users \ ryan \ documents \ visual studio 2008 \ projects \ vc \ myinfo \ cli \ mediainfo \ file__analyze_buffer_minimizesize.cpp 1 CLI

我的系统:win7 / VS2008

6 个答案:

答案 0 :(得分:7)

解决方案1 ​​:在解决方案中找到* .vcxproj文件,在文本编辑器中打开并搜索“DebugInformationFormat”并将其设置为“OldStyle”。重新加载您的项目并构建。如果解决方案中有多个项目,则所有* .vcxproj文件都需要进行此更改。

  

< DebugInformationFormat>旧式< / DebugInformationFormat>

解决方案2 :从Visual Studio中,在解决方案中的每个项目上单击鼠标右键,然后打开“属性”。展开“配置属性”> 'C / C ++'> '一般'。将“调试信息格式”更改为“C7兼容(/ Z7)”。然后构建您的解决方案。

这对我有用。 (YMMV =您的里程可能会有所不同:)

答案 1 :(得分:3)

在将VS2003.Net解决方案转换为在以后的IDE上运行时,我看到了相同的行为。我的猜测是你的解决方案包含多个项目,这些项目指向同一个中间目录。在VS2005及更高版本中,可以并行构建不相互依赖的项目,这样如果使用相同的工作目录,则可能会出现这样的文件冲突。

按如下方式检查。在解决方案资源管理器中,右键单击其中一个失败项目,然后选择“属性”。在配置属性中 - >一般部分,确保每个项目都有不同的“中间目录”。使用“重建解决方案”再次尝试构建,以清除所有内容。

答案 2 :(得分:1)

大多数情况下,当我收到“C2471:无法更新程序数据库”时,这是因为PDB文件由于某种原因而被锁定。通常在我的情况下,原因是因为我在其他窗口中运行程序,它将PDB文件加载到内存中。

当这不是原因时,我发现正在进行重建 - 所有人都神奇地解决了这个问题。

答案 3 :(得分:1)

我自己遇到了同样类型的错误而没有结束挫折。

我最后通过应用此知识库文章中的Microsoft热修复修复了它:http://archive.msdn.microsoft.com/KB946040

答案 4 :(得分:0)

这对我有用。

  

杀死mspdbsrv.exe并重新加载Visual C ++

MSDN

答案 5 :(得分:0)

您可以删除* .obj文件并重新生成解决方案,此问题可能会解决。以下链接可能对您有所帮助 - https://social.msdn.microsoft.com/Forums/vstudio/en-US/0ceac3c6-62f6-4fdf-82e1-d41e1b4fcd20/vs2008-c2471-cannot-update-program-database?forum=vclanguage