【发布时间】:2013-06-06 01:57:25
【问题描述】:
我的可执行文件有问题。我在我的 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-SCALING-L1-1-0.DLL
- DCOMP.DLL
- GPSVC.DLL
- IESHIMS.DLL
我在 Google 上搜索了那些 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”而被误导,...问题可能完全出在其他地方。
【问题讨论】:
-
据我所知,DirectComposition 在 Windows 7 上不可用 (DCOMP.DLL)。
-
重新打开这个怎么样?我的谷歌搜索让我在它被关闭后仅仅 20 小时就提出了这个问题,因为它“不太可能帮助任何未来的访问者”......
-
您必须注册哪 3 个 ocx 文件,更重要的是,您是如何计算出来的?我已经坚持了几天了
-
大家好。我想我搞定了这个(见下文),但作为旁注,您可以放心地忽略链接到 IESHIMS.DLL 和 GPSVC.DLL 的失败。它基本上出现在我在 Win7 中编译的所有内容中,并且似乎对功能没有影响。这种经验来自现在大约 30 多个二进制文件。 sigh 出于这样的原因,我讨厌-讨厌-讨厌做 windows 开发。
-
导致 api-ms-win-* DLL 的 Windows 7 内核更改在这里得到了很好的解释 nirsoft.net/articles/windows_7_kernel_architecture_changes.html - 我认为 DependencyWalker 无法处理这些更改 - 所以不要太担心这些。来自 MS:msdn.microsoft.com/en-us/library/hh802935%28v=vs.85%29.aspx