Visual Studio 2012:cl.exe -1073741701(仅限 x86 版本)

Visual Studio 2012:cl.exe -1073741701(仅限 x86 版本)

我在 Windows 7 SP1 下使用已更新至 SP5 的 Visual Studio 2012 Professional,并进行了最新更新。我需要 Visual Studio 2015 一段时间,安装后使用标准卸载程序将其卸载。

但是今天我需要为 Windows 构建 Webkit,并且它的构建脚本运行vswhere.exe并检测到 Visual Studio 2015 的某些部分为“工作”安装,所以我需要“完全”卸载 VS2015,我在这里找到了它:https://github.com/Microsoft/VisualStudioUninstaller。我运行了一次,VS2015 从vswhere.exe输出中消失了。

但现在我遇到一个问题:我尝试使用 VS2012 编译的每个应用程序都出现“cl.exe 异常终止,代码为 -1073741701”。

我试过 :

  • 多次重新安装了带或不带 SP5 的 VS2012,包括全新重新安装(卸载主程序、卸载依赖项、再次安装),仍然是同样的错误。
  • 尝试修复 VS2012。
  • 我试图运行C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin\cl.exe,它说“未找到 mspdb110.dll”。
  • 我 从 PATH 复制了Msobj110.dll、 和 Mspdb110.dll, 并添加到其中。错误仍然相同。Mspdbcore.dllMspdbsrv.exeC:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDEC:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE

如果我将项目平台切换到 x64,它可以编译并运行,没有问题。只有 x86 编译器无法运行并给出上述错误。有时 VS2012 会弹出“cl.exe 无法运行代码 0xc000007b”的提示。

如果我运行 C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\vcvarsall.bat x86,我可以运行cl.exe甚至编译有效的 32 位应用程序,但在 Visual Studio 2012 IDE 中,cl.exe无论我做什么,它每次都无法运行。

请帮助我修复它。

我认为这可能与文件夹中的 .NET Framework 有关(我安装了 4.5、4.6 和 4.7)MSBuild。也许我需要以某种方式重新安装 .NET Framework SDK?如果可能的话,我想避免重新安装操作系统。

编辑:已开始悬赏。问题依然存在。

我尝试cl.exe在“构建前运行...”脚本中插入不带参数的运行,然后它就从那里运行了!但之后 IDEcl.exe从 .NET 环境运行并给出:

C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V110\Microsoft.CppCommon.targets(347,5): 错误 MSB6006: “CL.exe”终止错误代码 -1073741701

如果我选择 x64 平台,cl.exe则在任何地方都可以完美运行。如果我运行vcvarsall.bat x86,则可以运行cl.exe并编译。

我唯一需要修复的是环境中用于从 Visual Studio 2012 IDE 构建 Win32 x86 的一些路径。我可以重新安装 .NET Framework 或 Visual Studio(试过了但还是不行)或编辑一些 MSBuild 配置。请告诉我在哪里可以修复。我唯一不能做的就是重新安装操作系统,因为我有很多软件,重新安装会花费很多时间。

更新:尝试卸载所有内容,包括 .NET Framework 4.5、4.6、4.7 和 Microsoft SQL Server 2008、2012。然后安装 Visual Studio 2012 Professional RTM。安装后,第一次运行时,我打开测试应用程序并收到与上述相同的错误... x64 版本可以正常工作。安装 SP5 后也一样。

更新 2:尝试从正在运行的 Windows 7 SP1 虚拟机安装中引入 Visual Studio 2012 和 Windows SDK 以及 msbuild 文件。它没有修复错误,同样的问题。还尝试用虚拟 32 位应用程序替换 cl.exe,每次我从 IDE 运行构建时仍然会导致 0xc000007b。似乎从 IDE 运行时,Visual Studio 使用 cl.exe 32 位和一些 64 位 DLL。但我不知道如何找到它以及如何修复。

答案1

如果安装了多个 Visual Studio 版本,则卸载其中一个版本的风险在于卸载过多版本。Visual Studio 版本可以并排安装,但它们可能会使用通用组件。

看来这就是你遇到的情况,你通过复制 DLL 和修改 PATH 来修复它的努力只会增加混乱。目前我认为你的 PATH 和其他环境变量导致了 32 位和 64 位 DLL 的混淆,除非你运行vcvarsall.bat重置它们。

我认为我不应该提供更多有关进一步解决这一问题的想法,因为这可能只会加剧问题并为未来留下定时炸弹。

这是我能想到的全新安装 Visual Studio 和 .Net 的最接近的方法:

  • 使用以下方法彻底卸载 Visual Studio 2012 Professional Revo Uninstaller 免费软件
  • 卸载所有 .Net 版本,可以从控制面板 > 程序和功能,以及打开或关闭 Windows 功能中卸载
  • 手动或运行清理程序清理所有文件夹和注册表,例如 CCleaner
  • 重新安装 .Net 版本,同时尽量减少其数量(通常您只需要最新版本)
  • 安装 Visual Studio 2012 Professional 并更新到 SP5。

我不能保证成功,但这是我尝试获得真正干净的安装并避免重新安装 Windows 的方法。

我建议备份系统磁盘映像,以防万一,这样你就可以返回它。我建议 AOMEI Backupper 标准版

答案2

在 VS2015 中遇到了同样的问题。就我而言,从项目文件夹中删除以下文件可以解决问题

\.vs\myProjectName\v14\.suo
\myProjectName.VC.db
\x64 (the whole x64 build output folder if there is one)

相关内容