为什么我得到错误C1033:无法在VS 2010中打开程序数据库

时间:2013-12-02 23:50:36

标签: c++ visual-studio-2010

从C ++中长时间休息后,我试图在VS2010中编译一个非常简单的C ++项目。我创建了一个Win32 C ++控制台空项目,我选择了没有预编译的头文件,没有其他MS库。我添加了以下main.cpp文件:

#include <iostream>
#include <string>

using namespace std;

class A
{
public:
  string name;
};

int main(int argc, char** argv)
{
  return 0;
}

当我编译时,我得到臭名昭着的错误:

1>------ Build started: Project: TestGetline, Configuration: Debug Win32 ------
1>  main.cpp
1>main.cpp : fatal error C1033: cannot open program database ''
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

以下是一些事实:

  • 我使用桌面Parallels运行Windows 7 64位作为VM:版本6.1.7601 Service Pack 1 Build 7601. VM已选中共享配置文件,这意味着文档,下载等文件夹之间共享OSX&amp; Windows 7。

  • VS 2010版:Microsoft Visual Studio 2010,版本10.0.40219.1 SP1Rel,Microsoft .NET Framework版本4.0.30319 SP1Rel

  • 我用于启动VS 2010的链接已选中在Windows XP(Service Pack 3)的兼容模式下运行此程序。不检查以管理员身份运行此程序。

  • 我在其他帖子中尝试了一些建议但没有一个有效。例如,我尝试杀死mspdbsrv.exe(VS 2010已关闭),手动删除调试目录,然后重新编译项目。我试图将调试信息格式更改为C7兼容,但后来又出现了另一个错误(main.cpp:致命错误C1074:'IDB'是PDB文件的非法扩展:)。我尝试以管理员身份运行VS 2010,但错误与臭虫一样顽固。是的,在尝试所有这些时都有防病毒运行。

还有其他想法吗?人们不禁想知道在VS 2010中是否有人在进行C ++开发。目前还不能升级到VS 2012或2013.

由于

只是一个更新,这里是编译日志文件失败的构建任务的输出:

 1>Target "ClCompile" in file "C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Platforms\Win32\Microsoft.Cpp.Win32.Targets" from project "C:\projects\cpp\TestGetLine\TestGetline\TestGetline.vcxproj" (target "_ClCompile" depends on it):
   Using "Delete" task from assembly "Microsoft.Build.Tasks.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a".
   Task "Delete"
   Done executing task "Delete".
   Task "CL" skipped, due to false condition; ('%(ClCompile.PrecompiledHeader)' == 'Create' and '%(ClCompile.ExcludedFromBuild)'!='true') was evaluated as ('' == 'Create' and ''!='true').
   Using "CL" task from assembly "Microsoft.Build.CppTasks.Win32, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a".
   Task "CL"
     Forcing recompile of all source files due to missing PDB "Debug\vc100.pdb".
     Environment Variables passed to tool:
       VS_UNICODE_OUTPUT=1328
     c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\CL.exe /c /Zi /nologo /W3 /WX- /Od /Oy- /D WIN32 /D _DEBUG /D _CONSOLE /D _UNICODE /D UNICODE /Gm /EHsc /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Fo"Debug\\" /Fd"Debug\vc100.pdb" /Gd /TP /analyze- /errorReport:prompt main.cpp
     Tracking command:
     C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\bin\NETFX 4.0 Tools\Tracker.exe /d C:\Windows\Microsoft.NET\Framework\v4.0.30319\FileTracker.dll /i C:\projects\cpp\TestGetLine\TestGetline\Debug /r C:\PROJECTS\CPP\TESTGETLINE\TESTGETLINE\MAIN.CPP /b MSBuildConsole_CancelEvent7f4b09d9e64d472facf5c417755b2cdd  /c "c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\CL.exe"  /c /Zi /nologo /W3 /WX- /Od /Oy- /D WIN32 /D _DEBUG /D _CONSOLE /D _UNICODE /D UNICODE /Gm /EHsc /RTC1 /MDd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Fo"Debug\\" /Fd"Debug\vc100.pdb" /Gd /TP /analyze- /errorReport:prompt main.cpp
     main.cpp
 1>main.cpp : fatal error C1033: cannot open program database ''
     The command exited with code 2.
   Done executing task "CL" -- FAILED.
 1>Done building target "ClCompile" in project "TestGetline.vcxproj" -- FAILED.
 1>Done Building Project "C:\projects\cpp\TestGetLine\TestGetline\TestGetline.vcxproj" (build target(s)) -- FAILED.

10 个答案:

答案 0 :(得分:10)

为了解决这个问题,我删除了pdb文件(在我备份之后),然后构建它。

答案 1 :(得分:6)

我在Dropbox文件夹中运行项目时始终出现此错误。似乎dropbox在我尝试构建时正在备份.pdb文件。

通常一次或两次尝试后都可以使用。

答案 2 :(得分:3)

我取消选中“在W​​indows XP(Service Pack 3)的兼容模式下运行此程序”复选框,现在可以使用了。最初我玩其他选项但不是这个!

答案 3 :(得分:2)

我刚遇到问题,原因是驱动器上存在空间问题。当我清理目录时,一切都很好。

[编辑]太空是一个红鲱鱼。事实证明问题是随机的。似乎在构建许多文件时VS2010没有快速释放vc100.pdb文件。我们在连续编译之间等待了1秒,这对大多数人都有帮助。有些人不得不将等待时间增加到3秒。似乎MS在VS2012中解决了这个问题,所以如果你有选择升级那可能是最好的。

答案 4 :(得分:1)

我也有这个问题

  

filename.cpp:致命错误C1051:程序数据库文件'e:\ a \ b \ c \ d \ filename.pdb

我已通过删除filename.pdb文件解决了此问题,并且可以正常工作。

删除后,将通过构建自动生成 *。pdb 文件,并调用该文件

答案 5 :(得分:1)

确保在尝试构建时没有调试。那为我解决了。

答案 6 :(得分:0)

我通过将项目文件夹移动到另一个文件夹来解决它。然后编译器没有抱怨它。

答案 7 :(得分:0)

我遇到了相同的问题,但是在Visual Studio 2005中遇到了同样的问题。在构建完成之前取消构建会导致文件损坏,删除.idb文件,然后重新构建可以解决此问题。

答案 8 :(得分:0)

在某些情况下,在新的Windows环境中,路径可能区分大小写,但是cl.exe无法使用它们,因此您需要检查它并将其更改为不区分大小写。问题在这里用西班牙语描述:

答案 9 :(得分:0)

我还取消了“在兼容模式下为Windows XP运行此程序(Service Pack 3)”复选框,它现在确实可以使用。本来我玩的是其他选项,但不是这个!