我的可执行文件有问题。我在 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 天试用)盒子上运行。
The x86 依赖步行者 http://en.wikipedia.org/wiki/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
- 动态链接库
- 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”而被误导,...问题可能完全出在其他地方。