Visual Studio 2013:CL.exe 退出代码为-1073741515

13

我有一个全新的Windows 8.1 Pro x64安装和一个全新的Visual Studio 2013 Pro。当试图使用平台工具集编译一个项目到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工具。


2
仅作为帮助,退出代码可以解释为0xC0000135(您拥有的代码的无符号版本),这将在搜索时可能会出现更多结果。快速搜索结果显示,您可能正在64位项目中链接32位库?或者您没有运行正确的vcvarsall.bat? - icabod
谢谢回复!我正在IDE中运行。Win32 Debug、Release、x64 Debug、Release,在清理项目之间都会出现相同的错误。 - foxx1337
为此,我创建了一个新的控制台应用程序项目,但它无法使用Windows7.1SDK进行编译。 - foxx1337
我能建议的就是检查选项中“项目和解决方案”的2013版本(抱歉,我这里只有2008!),并检查win32和win64项目的库文件路径是否正确设置($(WindowsSdkDir)\lib$(WindowsSdkDir)\lib\x64或类似)。 - icabod
包含目录为 $(WindowsSdkDir)\include;$(VCInstallDir)include,如果我展开并点击宏,我可以看到 $(WindowsSdkDir)C:\Program Files\Microsoft SDKs\Windows\v7.1\,这在我的机器上是正确的。对于库文件也是一样 - $(WindowsSdkDir)lib;$(VCInstallDir)lib - foxx1337
类似于:https://stackoverflow.com/q/4189109/1959808 - 0 _
3个回答

13
尝试使用Platform Toolset编译使用Windows7.1SDK的项目时,可能会出现编译器崩溃的情况。-1073741515 == 0xC0000135 == STATUS_DLL_NOT_FOUND是一个严重的错误,因为当您对SDK 7.1进行目标设置时,它绝不能发生,因为该版本仍然使用相同的编译器,仅更改了SDK目录。 编译器本身以及它使用的DLL不是SDK的一部分,并且只在机器上没有安装VS时提供。 您可以使用SysInternals的Process Monitor来诊断此问题,您将看到CL.EXE进程正在搜索DLL但找不到它。正确的方法是选择v120_xp工具集,这将构建可以在XP上运行的程序,并自动选择已在计算机上安装的7.1A SDK。建议撤销所做的更改。请勿将Regedit.exe视为已加载的武器,最近配置VS的注册表键集已变得非常混乱。

谢谢!我只安装了7.1 SDK,因为我需要 Platform Tools v100。我不确定 7.1 SDK 是否包含它们,而且我没有可用的 Visual Studio 2010 设置。 - foxx1337
我非常怀疑这一点,因为SDK安装程序通常会注意到是否已安装VS,但它不会了解平台工具集的工作方式,这是后来才添加的。当然,退出代码会大声地说“不!” - Hans Passant
2
今天我学到了新知识!使用进程监视器,过滤器设置为 cl.exe,发现它在各个地方都无法成功地 CreateFile mspdb100.dll。我想这就是问题所在!我会继续调试(甚至安装2010 Express),然后根据需要发布更多评论并标记答案。 - foxx1337
Visual Studio Community 2015具有SDK作为安装功能。 - Cees Timmerman

5
引用自 Yodans 解决方案 如何在没有VS2008的情况下使用v90平台工具集在VS2012中构建,使用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. Microsoft Windows SDK for Windows 7 (7.1)(Windows SDK核心组件文件)
    2. Application Verifier
    3. Debugging Tools for Windows
    4. Windows Performance Toolkit
    5. Microsoft Help Viewer 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 在 如何在没有VS2008的情况下使用v90平台工具集在VS2012中构建,使用Windows SDK?中建议的那样做。

0
以下步骤适用于我在VS 2017中的操作。
1.关闭VS 2017。 2.重新启动计算机。 3.在VS 2017中打开解决方案。 4.构建项目。 这次我没有遇到错误,项目构建成功。
错误信息:msb6006 "link.exe"以代码-1073741819退出。

微软产品需要重启的次数太多了,这真是太蠢了。最近在 macOS 上也开始出现这种情况,但 IT Crowd 能够将“你试过关闭然后重新打开吗?”变成一个模因,这其中一定有原因。 - dragon788

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接