Windows 7,64位,DLL问题

时间:2013-06-10 12:02:23

标签: windows dll

我的可执行文件存在问题。我在我的Windows 7 64位开发盒上运行这个C ++ 32位可执行文件,它还包含所有这些Microsoft应用程序(Visual Studio 2008 + 2010,TFS,SDK,Microsoft Office)...... 它仍然运行良好。

现在我得到了同一个程序的客户端安装,并被要求用干净的Windows 7安装进行测试。因此,我得到了一个Windows 7 64位VMware,并将其更新为Windows 7 SP 1(我的开发人员盒正在调整的版本相同)。 但是在我的开发人员盒上,一切都很好,程序无法与VMware(30天试用版)框一起使用。

x86 Dependency Walker告诉我缺少以下DLL文件:

  • API-MS-WIN-CORE-COM-L1-1-0.DLL
  • API-MS-WIN-CORE-的WinRT-ERROR-L1-1-0.DLL
  • API-MS-WIN-CORE-的WinRT-L1-1-0.DLL
  • API-MS-WIN-CORE-的WinRT-ROBUFFER-L1-1-0.DLL
  • API-MS-WIN-CORE-的WinRT-STRING-L1-1-0.DLL
  • API-MS-WIN-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上的安装确实没有。

有关如何解决此问题的任何想法? 我试图在Microsoft页面上找到合适的下载/修复,但我失败了。


在解决了我的问题之后,我想报告我发现的内容,我不能将此作为答案发布,因为问题已经结束。

实际上Dependency Walker工具报告的所有DLL文件都丢失了,即那些

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

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

在我的情况下,三个OCX文件的注册丢失了,之后一切都很好,但是Dependency Walker工具仍然列出了所有相同的DLL文件,即使程序现在运行正常。

它的要点:正如其他人所说的那样,该工具现在有点过时了,并不总是适用于较新的操作系统。因此,请注意不要错过'API-MS-WIN-CORE-COM-L1-1-0.DLL',......问题可能完全在其他地方。

14 个答案:

答案 0 :(得分:59)

此问题与缺少Visual Studio“可再发行组件包”有关。基于依赖性遍历缺少哪一个是不明显的,但我会首先尝试与您的编译器版本对应的那个,看看事情是否正常运行:

Visual Studio 2015

Visual Studio 2013

Visual Studio 2010

Visual Studio 2008

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


敢于在此处注入新链接:The latest supported Visual C++ downloadsSteinÅsmul,29.11.2018

答案 1 :(得分:19)

我也是,我刚用MSCVC 2012解决了C ++ Qt5和W7 64位的相同问题。

一开始我认为这是一个MSVC / windows dll问题,但正如BorisP所说,问题出在我的项目依赖项中。关键是“如何在Qt5中了解您的项目依赖关系?”。

由于我没有找到任何明确的方法来了解它(Dependency Wolker对我没有多大帮助......),我接下来的“反向程序”,不超过5分钟,避免了很多麻烦与Dlls依赖:

  1. 编译项​​目并将可执行文件转到空文件夹: myproject.exe
  2. 尝试执行它,它将检索错误(缺少dlls ......)。
  3. 现在,将所有dll 从Qt(在我的情况下,它们在C:\ Qt \ Qt5.1.1 \ _ 5.1.1 \ msvc2012_64_opengl \ bin中)复制到此文件夹。
  4. 尝试再次执行,它可能会正常工作。
  5. 开始逐步删除,并在每次可执行文件仍然有效时尝试,尝试保留最少的必要DLL。
  6. 当你将所有DLL放在同一个文件夹中时,更容易找到哪些DLL无效(XML,webkit ......等等......),因此这种方法不需要超过五分钟。

答案 2 :(得分:16)

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

Dependency Walker在这种情况下会产生误导,导致我浪费时间。所以,第一篇文章中“丢失”的dll列表没有帮助,你可以忽略它。

解决方案是找到您的项目正在调用的引用,并检查它们是否确实安装在服务器上。

@Ben Brammer,缺少3个.ocx文件并不重要,因为他们只缺少Leo T Abraham的项目。你的项目可能会调用其他的dll。

就我而言,它不是3个.ocx文件,但缺少MySQL连接器DLL。在服务器上安装MySQL Connector for .Net后,问题就消失了。

因此,简而言之就是:检查所有项目引用是否都存在。

干杯

答案 3 :(得分:11)

如前所述,DCOMP是VC ++可再发行组件的一部分(实现OpenMP运行时),并且是唯一真正缺少的组件。其余的都是错误的报道。

具体来说,API-MS-WIN-XXXX.DLL是 API-sets - essentially, an extra level of call indirection自Windows 7以来逐渐引入。依赖性walker开发似乎在此之前很久就停止了,它不能正确处理API集。

所以没有什么可担心的。你不会错过任何其他的东西。

找到缺少的真正需要的DLL(如果确实是问题)的更好的替代方法是运行ProcessMonitor并从失败中倒退,在所有系统路径中搜索特定DLL的失败探测序列。

答案 4 :(得分:6)

我也遇到了这个问题,但是这里似乎是一个共同主题的解决方案,我在网上的其他地方看到的是“[重新安装可再发行组件包”。但是,对我来说不起作用,因为运行我们产品的安装程序(安装可再发行组件包)来测试我们闪亮的新VS 2015版本时会出现问题。

问题出现了,因为列出的dll不在Visual Studio安装路径中(例如C:\ Program Files(x86)\ Microsoft Visual Studio 14.0 \ VC \ redist),因此尚未添加到安装中。这些api-ms-win- * dll作为Visual Studio 2015安装的一部分安装到Windows 10 SDK安装路径(例如C:\ Program Files(x86)\ Windows Kits \ 10 \ Redist)。在Windows 10上安装工作正常,但在Windows 7上安装需要将这些dll添加到我们的产品安装中。有关详细信息,请参阅https://support.microsoft.com/en-us/kb/2999226,其中介绍了VS 2015引起的这些依赖项的添加,并提供了各种Windows平台的下载;另见https://blogs.msdn.microsoft.com/vcblog/2015/03/03/introducing-the-universal-crt/,其中描述了CRT库的重新设计。特别感兴趣的是标题为使用通用CRT的分发软件部分的第6项:

  

2015年9月11日更新:支持通用CRT的应用程序本地部署。要获取应用程序本地部署的二进制文件,请安装Windows 10的Windows软件开发工具包(SDK)。二进制文件将安装到C:\ Program Files(x86)\ Windows Kits \ 10 \ Redist \ ucrt。您需要使用您的应用程序复制所有DLL(请注意,在不同版本的Windows上,所需的DLL集是不同的,因此您必须包含所有DLL,以便您的程序在所有受支持的Windows版本上运行)。

答案 5 :(得分:5)

这个贡献并没有真正回答最初的问题,但考虑到这个线程的命中率,我认为有很多人在处理API-MS-WIN-CORE-库无法找到的问题。

我能够解决一个问题,即我的应用程序拒绝启动错误消息,即只通过更新Visual Studio找不到API-MS-WIN-CORE-WINRT-STRING-L1-1-0.DLL。 / p>

我不认为我的构建环境(Win7 Pro SP1,Visual Studio Ultimate 2012)完全搞砸了,它对我的​​大多数项目都很好。但在某些特定情况下,我收到了错误消息(见下文)。

从初始CD版本(我忘了查找版本号)的updating Visual Studio 11到版本11.0.61030.00 Update 4后,破损的项目再次运行。

我希望这有助于某人!

Error message at application startup

答案 6 :(得分:3)

这解决了我的问题。
如果已安装VS 2010可再发行组件包,请将其卸载,然后再安装 Microsoft Windows 7 SDK

答案 7 :(得分:2)

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

答案 8 :(得分:1)

安装新安装的Windows 7上的MSSQL Management Studio 2014在经过2天的荒谬战斗后解决了这个问题。

答案 9 :(得分:1)

我有同样的问题。花了几个小时在网上搜索后,我找到了一个解决方案。 我将文件:combase.dll(C:\ windows \ system32)放在realese文件夹中并解决。

答案 10 :(得分:1)

对于任何来到这里但有photoshop问题的人:我的解决方案是卸载ms vc ++ redistributable,首先是x86和64。比安装一个适用于Windows版本和体系结构(86或64)。

答案 11 :(得分:0)

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

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

  

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

中的{{1}}

答案 12 :(得分:0)

建议还检查当前正在使用多少内存。原来,无法找到这些DLL是尝试在Visual Studio中运行程序(运行或调试)时出现的第一个症状。经过半个多小时的努力,开始搜寻网络,运行procmon和任务管理器,并依靠它,一个自开始以来一直运行的完全不同的程序报告“内存不足;请尝试停止某些程序”或某些这样。杀死Firefox,Thunderbird,procmon等,一切都会恢复。

答案 13 :(得分:0)

仅在此处确认答案,我的解决方案是将未加载的DLL及其随附​​的ocx文件复制到system32文件夹中,从而解决了我的问题。