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”。
  • 我複製了 Msobj110.dllMspdb110.dllMspdbcore.dllMspdbsrv.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?如果可能的話,我想避免重新安裝作業系統。

編輯:開始賞金。仍然有同樣的問題。

我嘗試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。第一次運行安裝後,我打開測試應用程式並得到與上面相同的錯誤... x64 版本有效。安裝SP5後也是這樣。

UPDATE2:嘗試從工作的 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 版本的風險是卸載太多。 Visual Studio 版本可以並行安裝,但它們可以使用通用元件。

看來這就是發生在你身上的事情,你透過複製 DLL 和修改 PATH 來修復它的努力只會增加混亂。目前我認為您的 PATH 和其他環境變數會導致 32 位元和 64 位元 DLL 的混淆,除非您執行vcvarsall.bat重置它們。

我認為我不應該提出更多的想法來進一步修補局勢,因為這可能只會加劇問題,並為未來留下隱藏的定時炸彈。

這是我能想到的最接近的乾淨安裝 Visual Studio 和 .Net 的方法:

  • 使用下列命令徹底卸載 Visual Studio 2012 Professional Revo 卸載程式免費軟體
  • 可以從「控制台」>「程式和功能」以及「開啟或關閉 Windows 功能」卸載所有 .Net 版本
  • 手動或透過執行諸如此類的清理程序來清理所有資料夾和註冊表 CC清理器
  • 重新安裝 .Net 版本,同時嘗試最大程度地減少其數量(通常您只需要最新版本)
  • 安裝 Visual Studio 2012 Professional 並更新至 SP5。

我不能保證成功,但這就是我嘗試獲得真正乾淨的安裝並避免重新安裝 Windows 的方法。

我建議您將系統磁碟的映像作為備份,以防萬一,以便您可以返回它。我建議 傲梅輕鬆備份標準版

答案2

VS2015也有同樣的問題。就我而言,從專案資料夾中刪除以下檔案解決了問題

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

相關內容