【问题标题】:Visual Studio 2013: CL.exe exited with code -1073741515Visual Studio 2013:CL.exe 退出,代码为 -1073741515
【发布时间】:2014-03-29 02:52:54
【问题描述】:

我有一个全新 Windows 8.1 Pro x64 安装和一个全新 Visual Studio 2013 Pro。 尝试使用 Platform Toolset 将项目编译为 Windows7.1SDK 我得到了

Error   1   error MSB6006: "CL.exe" exited with code -1073741515.   C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Platforms\Win32\Microsoft.Cpp.Win32.targets   57  5   MenuBrowser

我尝试运行提供的“Windows SDK 配置工具”,除了收到有关未安装 Visual Studio 2005 和 2008 的错误外,我认为它完成了工作。

我尝试手动编辑注册表:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\Windows

我手动将CurrentInstallFolder 设置为C:\Program Files\Microsoft SDKs\Windows\v7.1\,将CurrentVersion 设置为7.1.7600.0.30514。如果我查看项目属性并单击其中的不同路径/变量 -> 更多 -> 宏,我可以看到 $(WindowsSdkDir) 是正确的。

知道我应该尝试什么吗?在装有 Windows 7 和 VS 2012 的旧开发计算机上从未遇到过这个问题。

L.E.作为说明,如果我尝试使用 v120 工具的新项目,它可以工作,但我需要 Windows7.1SDK 工具。

【问题讨论】:

  • 作为帮助,退出代码可以解释为0xC0000135(您拥有的代码的未签名版本),在进行搜索时可能会出现更多结果。快速搜索一下,您可能会在 64 位项目中链接 32 位库?或者您没有运行正确的 vcvarsall.bat?
  • 感谢您的回复!我在 IDE 中运行。 Win32 Debug、Release、x64 Debug、Release,中间有 Clean Project 给出相同的错误。
  • 为此我创建了一个新的控制台应用程序项目,但它不能使用 Windows7.1SDK 编译。
  • 我能建议的就是在选项中检查 2013 年等效的“项目和解决方案”(对不起,我这里只有 2008 年!!),并检查 win32 和库文件的路径win64 项目设置正确($(WindowsSdkDir)\lib$(WindowsSdkDir)\lib\x64 或类似)。
  • 包含目录是$(WindowsSdkDir)\include;$(VCInstallDir)include,如果我展开并单击宏,我可以看到$(WindowsSdkDir)C:\Program Files\Microsoft SDKs\Windows\v7.1\ ,这在我的机器上是正确的。库相同 - $(WindowsSdkDir)lib;$(VCInstallDir)lib.

标签: c++ windows winapi visual-studio-2012 visual-studio-2013


【解决方案1】:

以下步骤适用于 VS 2017。

1.关闭 VS 2017。 2.重启机器。 3.在VS 2017中打开解决方案。 4.构建项目。 这次我没有收到以下错误,它构建成功。

错误 msb6006 "link.exe" 退出,代码为 -1073741819。

【讨论】:

  • 重启修复 Microsoft 产品的次数真是太愚蠢了。它最近也开始在 macOS 上发生更多,但 IT Crowd 能够从“您是否尝试过将其关闭再打开?”制作这样一个模因是有原因的。
【解决方案2】:

参考 Yodans 的解决方案 How to build with v90 platform toolset in VS2012 without VS2008, using Windows SDK?:

正如 Hans Passant 所指出的,cl.exe 查找 mspdb100.dll(以及其他)但没有找到它们。 需要的文件在下面7.中提到的目录中:

我的工作设置:

  1. VS2013 需要使用 VS2010 库
  2. 在 VS2013 中使用 WinSDK 7.1 构建工具 (v100)
  3. 全新安装,卸载 sdk 发行说明中提到的所有内容(可以在“详细信息”类别下的 http://www.microsoft.com/en-us/download/details.aspx?id=8279 下载)
    1. 适用于 Windows 7 (7.1) 的 Microsoft Windows SDK(Windows SDK 核心组件文件)
    2. 应用程序验证器
    3. Windows 调试工具
    4. Windows 性能工具包
    5. Microsoft 帮助查看器 1.0
    6. Microsoft Visual C++ 2010 Redistributable
    7. Microsoft Visual C++ 2010 标准版
    8. 另外删除了所有 .NET 和 VC++ 相关的 MS 软件(必要时未测试)
  4. VS2013选择Windows7.1SDK作为平台工具集
  5. 错误 MSB6006:“CL.exe”退出,代码为 -1073741515
  6. cl.exe 查找 msobj100.dll、mspdb100.dll、mspdbcore.dll 和 mspdbsrv.exe 之一
  7. 添加到 PATH:C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE
  8. 构建工作,二进制文件可用!

我犯了一个错误:

  1. 将上面6.中的文件复制到C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin,以为这个目录在PATH中,其实不是!
  2. 所以最好按照上面 7 中的建议或 Yodan 在How to build with v90 platform toolset in VS2012 without VS2008, using Windows SDK? 中的建议做

【讨论】:

    【解决方案3】:

    尝试使用 Platform Toolset 将项目编译为 Windows7.1SDK 时...

    这不是 VS2013 的“全新”安装中的有效选择。不是很清楚你一直在做什么,它肯定不再“新鲜”了。请务必将 Regedit.exe 视为加载武器,配置 VS 的注册表项集最近变得非常复杂。

    编译器崩溃并显示 -1073741515 == 0xC0000135 == STATUS_DLL_NOT_FOUND。这当然是一个非常严重的事故,当您以 SDK 7.1 为目标时,它应该永远发生,因为它仍然使用相同的编译器,只是 SDK 目录发生了变化。编译器本身以及它使用的 DLL 不是 SDK 的一部分,仅在机器未安装 VS 时才提供。您可以使用 SysInternals 的进程监视器来诊断此问题,您会看到 CL.EXE 进程正在搜索 DLL,但没有找到。

    针对 7.1 的正确方法是使用 v120_xp 工具集选择。它构建的程序仍然可以在 XP 上运行,它还会自动选择安装在您机器上的 7.1A SDK。请尝试撤消您所做的更改。

    【讨论】:

    • 谢谢!我只安装了 7.1 sdk,因为我需要 Platform Tools v100。我不确定 7.1 SDK 是否包含它们,并且我没有可用的 Visual Studio 2010 设置。
    • 我非常怀疑它,因为 SDK 安装程序通常会注意正在安装的 VS。并且不知道平台工具集的工作方式,这是后来添加的。退出代码大声说“不!”当然。
    • 今天我学到了!得到进程监视器,由cl.exe 过滤,它是CreateFileing 没有成功的 mspdb100.dll 到处都是。我想就是这样!我会再摆弄它(甚至可能安装 2010 Express),然后根据需要发布更多 cmets 并标记答案。
    • Visual Studio Community 2015 具有 SDK 作为安装功能。
    猜你喜欢
    • 2018-10-15
    • 1970-01-01
    • 2018-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-04
    • 2014-12-15
    相关资源
    最近更新 更多