我的可执行文件有问题。我在我的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'误导,…问题可能完全出在别处。


当前回答

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

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

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

其他回答

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

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

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

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

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

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

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

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

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

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

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