我的可执行文件有问题。我在我的Windows 7 64位开发盒上运行这个c++ 32位可执行文件,它也有所有的微软应用程序(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 -女士赢得核心- 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'误导,…问题可能完全出在别处。


当前回答

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

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

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

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

其他回答

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

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

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

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

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

将C:\Windows10Upgrade\wimgapi.dll替换为C:\ windows \ system32 \wimgapi.dll中的文件

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

这个问题与缺少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 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)。

Installing on Windows 10 worked fine, but installing on Windows 7 required adding these DLL files to our product install. For more information, see Update for Universal C Runtime in Windows which describes the addition of these dependencies caused by Visual Studio 2015 and provides downloads for various Windows platforms; also see Introducing the Universal CRT which describes the redesign of the CRT libraries. Of particular interest is item 6 under the section titled Distributing Software that uses the Universal CRT:

Updated September 11, 2015: App-local deployment of the Universal CRT is supported. To obtain the binaries for app-local deployment, install the Windows Software Development Kit (SDK) for Windows 10. The binaries will be installed to C:\Program Files (x86)\Windows Kits\10\Redist\ucrt. You will need to copy all of the DLLs with your app (note that the set of DLL files are necessary is different on different versions of Windows, so you must include all of the DLL files in order for your program to run on all supported versions of Windows).