从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.
答案 0 :(得分:10)
为了解决这个问题,我删除了pdb文件(在我备份之后),然后构建它。
答案 1 :(得分:6)
我在Dropbox文件夹中运行项目时始终出现此错误。似乎dropbox在我尝试构建时正在备份.pdb文件。
通常一次或两次尝试后都可以使用。
答案 2 :(得分:3)
我取消选中“在Windows 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)”复选框,它现在确实可以使用。本来我玩的是其他选项,但不是这个!