我的可执行文件存在问题。我在我的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 -... DLL文件,发现它们实际上已经是Windows 7的一部分(一些网站声称属于Windows 8和Windows Server 2012)。
我已经尝试了我找到的建议修复程序,它们是:
但这并没有解决任何问题。 : - (
旁注:我的开发框也没有它们,似乎不需要它们。例如,我的盒子上的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',......问题可能完全在其他地方。
答案 0 :(得分:59)
此问题与缺少Visual Studio“可再发行组件包”有关。基于依赖性遍历缺少哪一个是不明显的,但我会首先尝试与您的编译器版本对应的那个,看看事情是否正常运行:
我遇到了这个问题,因为我使用的是Visual Studio编译器,而不是完整的Visual Studio环境。
敢于在此处注入新链接:The latest supported Visual C++ downloads。 SteinÅsmul,29.11.2018 。
答案 1 :(得分:19)
我也是,我刚用MSCVC 2012解决了C ++ Qt5和W7 64位的相同问题。
一开始我认为这是一个MSVC / windows dll问题,但正如BorisP所说,问题出在我的项目依赖项中。关键是“如何在Qt5中了解您的项目依赖关系?”。
由于我没有找到任何明确的方法来了解它(Dependency Wolker对我没有多大帮助......),我接下来的“反向程序”,不超过5分钟,避免了很多麻烦与Dlls依赖:
当你将所有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后,破损的项目再次运行。
我希望这有助于某人!
答案 6 :(得分:3)
这解决了我的问题。
如果已安装VS 2010可再发行组件包,请将其卸载,然后再安装 Microsoft Windows 7 SDK
答案 7 :(得分:2)
我解决了这个问题。当我注册OCX文件时,我使用以管理员身份执行的命令窗口运行它。
答案 8 :(得分:1)
安装新安装的Windows 7上的MSSQL Management Studio 2014在经过2天的荒谬战斗后解决了这个问题。
答案 9 :(得分:1)
答案 10 :(得分:1)
对于任何来到这里但有photoshop问题的人:我的解决方案是卸载ms vc ++ redistributable,首先是x86和64。比安装一个适用于Windows版本和体系结构(86或64)。
答案 11 :(得分:0)
我来这里遇到了这个问题,在尝试全新的Windows 7 OEM安装后,升级到Windows 10。
在搜索了一些微软论坛后,我发现以下解决方案对我有用:
将
中的{{1}}C:\Windows10Upgrade\wimgapi.dll
替换为C:\Windows\System32\wimgapi.dll
答案 12 :(得分:0)
建议还检查当前正在使用多少内存。原来,无法找到这些DLL是尝试在Visual Studio中运行程序(运行或调试)时出现的第一个症状。经过半个多小时的努力,开始搜寻网络,运行procmon和任务管理器,并依靠它,一个自开始以来一直运行的完全不同的程序报告“内存不足;请尝试停止某些程序”或某些这样。杀死Firefox,Thunderbird,procmon等,一切都会恢复。
答案 13 :(得分:0)
仅在此处确认答案,我的解决方案是将未加载的DLL及其随附的ocx文件复制到system32文件夹中,从而解决了我的问题。