Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 什么是与VC2008项目相关的C2471、C1083错误,以及如何纠正这些错误_C++_Visual Studio 2008_Visual C++ - Fatal编程技术网

C++ 什么是与VC2008项目相关的C2471、C1083错误,以及如何纠正这些错误

C++ 什么是与VC2008项目相关的C2471、C1083错误,以及如何纠正这些错误,c++,visual-studio-2008,visual-c++,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\uuu

我有一个非常复杂的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\uuuu analyze\u buffer\u minimize.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\uu Analysis\u buffer\u Minimizeizeze.cpp 1 cli


我的系统:win7/VS2008

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


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

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


当这不是原因时,我发现重建可以神奇地解决问题。

我自己也遇到过同样类型的错误,沮丧不已


我最终通过应用在这篇知识库文章中找到的Microsoft热修复程序修复了它:

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

OldStyle

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

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

这对我很有效

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


您可以删除*.obj文件并重新生成解决方案,此问题可能会解决。下面的链接可能对您有所帮助-

撤消您所做的任何更改,错误就会消失。是的,这是显而易见的,但是如果你小心不要一次做太多的更改,那么弄清楚你做了什么来破坏项目应该很容易。不幸的是,你不能“撤消”对项目文件的更改,除非你能以某种方式用一个未破坏的副本替换你的工作副本,就像通过源代码管理一样。@ryanlancer-then@Brian和@Noah Roberts在评论中提出的建议,即放弃您的更改,并在每次更改后逐步重新实现它们,这是您最好的选择。如果您还没有获得原始项目和解决方案(gulp),那么您可以尝试使用“现有代码中的新项目”与现在的项目并排重新创建项目。但这很痛苦。请尝试杀死
mspdbsrv.exe
,然后重新启动IDE并重建。这个过程中可能有一个bug。这里提到了另一种可能性-尝试禁用预编译头-@ryanlancer:那么恐怕你别无选择,只能以某种方式放弃你的更改