Visual Studio 2012: cl.exe -1073741701 только на x86

Visual Studio 2012: cl.exe -1073741701 только на x86

Я использую Visual Studio 2012 Professional, обновленную до SP5 под Windows 7 SP1 с последними обновлениями. Мне была нужна Visual Studio 2015 некоторое время, я установил ее, а затем удалил ее стандартным деинсталлятором.

Но сегодня мне нужно было собрать Webkit для Windows, и его скрипт сборки запустился vswhere.exeи обнаружил некоторые части из Visual Studio 2015 как «рабочую» установку, поэтому мне потребовалась «полная» деинсталляция для VS2015, которую я нашел здесь:https://github.com/Microsoft/VisualStudioUninstaller. Я запустил его один раз, и VS2015 исчез из vswhere.exeвывода.

Но теперь у меня возникла проблема: каждое приложение, которое я пытаюсь скомпилировать с помощью VS2012, выдает ошибку «cl.exe аварийно завершен с кодом -1073741701».

Я пытался :

  • Несколько раз переустанавливал VS2012 с пакетом обновления 5 (SP5) и без него, включая чистую переустановку (удаление основного пакета, удаление зависимостей, повторная установка), ошибка все та же.
  • Попытался восстановить VS2012.
  • Я попробовал запустить C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin\cl.exe, пишет «mspdb110.dll не найден».
  • Я скопировал Msobj110.dll, Mspdb110.dll, Mspdbcore.dllи Mspdbsrv.exe из C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE и добавил в PATH C:\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? Если возможно, я хочу избежать переустановки ОС.

EDIT: Запустил баунти. Все еще та же проблема.

Я попробовал вставить запуск cl.exeбез параметров в скрипт "Run before build...", и он запускается оттуда! Но после этого IDE запускается cl.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и скомпилировать.

Единственное, что мне нужно исправить, это некоторый путь в среде, который используется для сборки Win32 x86 из Visual Studio 2012 IDE. Я могу переустановить .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: Пытался перенести файлы Visual Studio 2012 и Windows SDK и msbuild из работающей установки виртуальной машины Windows 7 SP1. Это не исправляет ошибку, та же проблема. Также пытался заменить cl.exe на фиктивное 32-битное приложение, все равно вызывает 0xc000007b каждый раз, когда я запускаю сборку из IDE. Похоже, что при запуске из 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.

решение2

Была та же проблема с VS2015. В моем случае удаление следующих файлов из папки проекта решило проблему

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

Связанный контент