Windows 7, 64位,DLL问题

我有一个问题与我们的可执行文件。我正在我的Windows 7 64位开发盒上运行这个c++ 32位可执行文件,它也有所有那些微软应用程序(Visual Studio 2008 + 2010, TFS, SDK, Microsoft Office)…

现在我得到了相同程序的客户端安装,并被要求用一个干净的windows安装测试它。因此,我得到了一个Windows 7 64位VMware,并将其更新到Windows 7 SP 1(与我的开发人员盒正在调优的版本完全相同)。 但是,虽然在我的开发人员盒子上一切都很好,但该程序不能与VMware(30天试用)盒子一起工作

x86 依赖沃克告诉我以下DLL文件丢失:

  • api -女士赢得核心- com - l1 - 1 - 0. - dll
  • api -女士赢得核心- winrt错误- l1 - 1 - 0. - dll
  • api -女士赢得核心- winrt - l1 - 1 - 0. - dll
  • api -女士赢得核心- winrt robuffer - l1 - 1 - 0. - dll
  • api -女士赢得核心- winrt字符串- l1 - 1 - 0. - dll
  • api -女士赢得shcore -扩展- l1 - 1 - 0. - dll
  • DCOMP.DLL
  • GPSVC.DLL
  • IESHIMS.DLL

我谷歌了一下API-MS-WIN…DLL文件,并发现它们实际上应该已经是Windows 7的一部分(一些网站声称属于Windows 8和Windows Server 2012)。

我已经尝试了我发现的建议修复,它们是:

  • 运行'sfc /scannow'
  • 安装Visual Studio 2008 SP1运行时可执行文件

但这并没有解决任何问题。: - (

旁注:我的开发盒也没有它们,似乎也不需要它们。例如,我的盒子上的user32.dll没有链接到其中一个,而VMware上的安装则链接到其中一个。

有什么关于如何解决这个问题的想法吗? 我试图在微软页面上找到合适的下载/修复,但我失败了

在解决我的问题后,我想报告我发现的东西,但我不能把这个作为答案,因为这个问题已经结束了。

实际上,所有的DLL文件报告丢失的依赖项行走工具,即那些

* API-MS-WIN-CORE-...

类型DLL文件不是实际问题的一部分。

在我的情况下,三个OCX文件的注册丢失了,之后一切都很好,但依赖步行者工具仍然列出了所有相同的DLL文件,就像以前一样,即使现在程序运行良好。

它的要点:正如其他人所说,这个工具现在有点过时了,在更新的操作系统上并不总是能正常工作。因此,请睁大眼睛,不要被遗漏的'API-MS-WIN-CORE-COM-L1-1-0.DLL'误导,…问题可能完全出在别处。

337122 次浏览

这个问题与缺少Visual Studio的“可重分发包”有关。根据依赖项行走,不明显缺少哪个,但我会先尝试与编译器版本对应的那个,看看是否运行正常:

Visual Studio 2015

Visual Studio 2013

Visual Studio 2010

Visual Studio 2008

我遇到这个问题是因为我使用的是Visual Studio编译器,而不是完整的Visual Studio环境。


敢于在这里注入一个新链接:最新支持的Visual c++下载斯坦因Åsmul, 29.11.2018

这为我解决了问题:

卸载Visual Studio 2010可重分发包(如果你已经安装了它),然后安装微软windows 7 SDK

我刚刚解决了同样的问题。

依赖沃克在这种情况下是误导性的,导致我失去时间。因此,第一篇文章中“丢失”DLL文件的列表没有帮助,您可能可以忽略它。

解决方案是找出你的项目正在调用哪些引用,并检查它们是否真的安装在服务器上。

@Ben Brammer,丢失哪三个。ocx文件并不重要,因为它们只在Leo T Abraham的项目中丢失。您的项目可能会调用其他DLL文件。

在我的例子中,它不是三个.ocx文件,而是丢失的MySQL连接器DLL文件。在服务器上安装MySQL Connector for . net后,这个问题就消失了。

因此,简而言之,解决方案是:检查是否所有的项目引用都在那里。

我刚刚用MSCVC 2012用c++ qt5和windows 7 64位解决了同样的问题。

一开始我认为这是MSVC/Windows DLL文件的问题,但正如BorisP所说,问题是在我的项目依赖。键是“如何在Qt 5中了解您的项目依赖关系?”。

因为我没有找到任何清楚的方法来知道它(依赖沃克没有帮助我很多…),我接下来遵循“逆过程”,不超过5分钟,并避免了大量令人头痛的DLL文件依赖:

  1. 编译项目并将可执行文件放到空文件夹:myproject.exe
  2. 尝试执行它,它将检索一个错误(丢失DLL文件…)
  3. 现在,将复制所有DLL文件从Qt(在我的情况下,他们在C:\Qt\Qt5.1.1\5.1.1\msvc2012_64_opengl\bin)到这个文件夹。
  4. 尝试再执行一次,它可能会正常工作。
  5. 开始逐步删除,并尝试每次您的可执行文件仍然工作,尽量留下最少的必要DLL文件。

当你在同一个文件夹中有所有的DLL文件时,更容易找到其中哪些是无效的(XML, WebKit,…)Whatever .),因此这个方法不会超过5分钟。

我解决了这个问题。当我注册OCX文件时,我使用已作为管理员执行的命令窗口运行它。

这篇文章并没有真正回答最初的问题,但是考虑到这个线程的点击率,我假设有相当多的人在处理API-MS-WIN-CORE-库找不到的问题。

我能够解决一个问题,我的应用程序拒绝启动错误消息API-MS-WIN-CORE-WINRT-STRING-L1-1-0.DLL不被简单地更新Visual Studio。

我不认为我的构建环境(Windows 7 Pro SP1, Visual Studio Ultimate 2012)完全是一团糟,它在我的大多数项目中都工作得很好。但是在一些非常特殊的情况下,我得到了错误消息(见下文)。

更新Visual Studio 11从初始cd版本(我忘记查找版本号)到版本11.0.61030.00更新4之后,破碎的项目再次运行。

应用程序启动时错误消息

在新安装的Windows 7上安装SQL Server Management Studio 2014解决了我们客户端的这个问题。

我也有同样的问题。在网上花了几个小时搜索之后,我找到了一个适合我的解决方案。

我复制文件combase.dll文件(C:\Windows\System32)到发布文件夹,它解决了问题。

我也遇到了这个问题,但解决方案似乎是一个常见的线程,在这里,我在网络上看到的其他地方,是“[重新]安装可重新分发的包”。然而,对我来说,这并不管用,因为当运行我们产品的安装程序(安装可重分发包)来测试我们闪闪发光的Visual Studio 2015版本时,问题出现了。

出现此问题是因为列出的DLL文件不在Visual Studio安装路径中(例如,C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\redist),因此没有添加到安装中。这些api-ms-win-* dll被安装到Windows 10 SDK安装路径中,作为Visual Studio 2015安装的一部分(例如C:\Program Files (x86)\Windows Kits\10\Redist)。

在Windows 10上安装工作正常,但在Windows 7上安装需要将这些DLL文件添加到我们的产品安装中。有关更多信息,请参见Update for Universal C Runtime in Windows,它描述了Visual Studio 2015引起的这些依赖项的添加,并提供了各种Windows平台的下载;也可以参见通用CRT介绍 .,它描述了CRT库的重新设计。特别有趣的是使用通用CRT的分发软件部分下的第6项:

2015年9月11日更新:支持通用CRT的应用程序本地部署。app-local部署的二进制文件需要安装Windows 10操作系统的SDK (Windows Software Development Kit)。二进制文件将安装到C:\Program Files (x86)\Windows Kits\10\Redist\ucrt。你需要将所有DLL拷贝到你的应用程序中(注意,在不同版本的Windows上所需的DLL文件集是不同的,所以你必须包含所有DLL文件,以便你的程序能在所有受支持的Windows版本上运行)。

如前所述,DCOMP是vc++可重分发组件(实现OpenMP运行时)的一部分,也是唯一真正缺失的组件。其余的都是假报道。

具体来说,API-MS-WIN-XXXX.DLL是自Windows 7以来逐渐引入的API-sets - 本质上,这是一个额外级别的调用间接性依赖沃克的开发似乎在那之前就停止了,而且它不能正确地处理API集。

所以没有什么好担心的。你不会再错过任何东西了。

寻找真正需要的丢失的DLL文件(如果这确实是问题所在)的更好的替代方法是运行过程监控并从失败中后退,在所有系统路径中搜索特定DLL文件的失败探测序列。

对于任何来到这里,但有Photoshop问题的人:我的解决方案是卸载mvc++可重新分发的第一个x86和64。然后安装一个适合Windows版本和体系结构(86或64)的软件。

我在这里遇到了这个问题,在尝试了一个新的Windows 7 OEM安装后,升级到Windows 10。

在搜索了微软论坛之后,我发现了以下对我有用的解决方案:

C:\Windows10Upgrade\wimgapi.dll替换为C:\Windows\System32\wimgapi.dll中的值

我建议还检查当前使用了多少内存。

事实证明,无法找到这些DLL文件是在Visual Studio中运行程序(运行或调试)时出现的第一个症状。

经过半个多小时的绞尽脑汁,搜索网页,运行过程监控任务管理器,并依赖,一个完全不同的程序,从一开始就一直在运行,报告说“内存低;试着停止一些程序”。在杀死Firefox、雷鸟、进程监视器和依赖之后,一切都恢复正常了。

只是为了确认这里的答案,我的解决方案是复制没有加载的DLL和ocx文件到system32文件夹,这解决了我的问题。