我正在尝试在 VS2010 C++ 项目上运行 fortify。我创建了一个非常简单的 hello world 项目并尝试使用以下命令运行 fortify:
sourceanalyzer.exe -b sample devenv sample.sln /REBUILD
我不断收到此错误:
C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Platforms\Win32\Microsoft.Cpp.Win32.Targets(147,5): error MSB6006: "CL.exe" exited with code -1073741701.
完整的构建日志是:
Microsoft (R) Visual Studio Version 10.0.30319.1.
Copyright (C) Microsoft Corp. All rights reserved.
1>------ Rebuild All started: Project: sample, Configuration: Debug Win
32 ------
1>Build started 09/07/2012 12:13:33 PM.
1>_PrepareForClean:
1> Deleting file "Debug\sample.lastbuildstate".
1>InitializeBuildStatus:
1> Creating "Debug\sample.unsuccessfulbuild" because "AlwaysCreate" was specified.
1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Platforms\Win32\Microsoft.Cpp.Win32.Targets(147,5): error MSB6006: "CL.exe" exited with code -1073741701.
1>
1>Build FAILED.
1>
1>Time Elapsed 00:00:00.09
我没有收到任何其他错误。我的操作系统是 Windows7 64 位。我的项目是一个 32 位控制台应用程序。我正在使用 fortify 32 位版本:“Fortify Source Code Analyzer 5.9.5.0007”
我尝试浏览微软页面以查找错误,但它显然是一个通用错误代码。我怀疑不兼容,但无法缩小范围。你能告诉我哪里出错了吗?
更新:更多信息:
配合VS2010的cl.exe,运行清晰。该错误是由 Fortify 的 cl.exe 引发的。我检查了错误代码,显然 cl.exe 无法启动。我与dependency walker交叉检查,它缺少几个dll(gpsvc.dll和IEShims.dll)。我有一个 64 位的 Windows 安装,但 cl.exe 是 32 位的,我没有这些 DLL 的 32 位版本。我不确定这是否是根本原因,因为它们是延迟加载的,可能不会导致提到的错误。