我用 C++ 编译了一个相对简单的 Direct3D9 程序。但是,每当我尝试使用 Debug 运行时时,都会弹出此错误。根据我找到的所有参考资料,Windows 7 中未列出此 DLL。起初,我认为这是我的应用程序的问题。但我去了 Windows Update 并安装了所有最新更新。
现在我还有其他未曾动过的应用程序,比如 Chrome,它们也报告了同样的问题 - 消息框经常弹出。我重新安装了 Visual Studio,但毫无效果,并且运行了所有最新的 Windows 补丁,但同样毫无效果。
有什么建议么?
答案1
api-ms-win-core* 文件是 Windows7 使用的虚拟 dll。这看起来像是您的程序在兼容模式下运行(例如与 Windows XP 兼容),但实际上是为 Windows 7 编译的。
如果这是一个新的应用程序,请尝试更改输出 EXE 文件名以重置该程序的兼容性状态。
如果这是您从互联网或朋友处获得的应用程序,请将其卸载然后重新安装。
答案2
删除 VS2011 后启动程序 (Autodesk 3dmax) 时,我遇到了完全相同的问题。我根据链接中给出的线索修复了这个问题。在我的系统上,我发现 windows\system 和 windows\syswow64 中有 d3d9.dll 和 d3d9d.dll。d3d9d.dll 上的日期/时间是 2011 年的,所以我删除了 d3d9d.dll 的两个副本,只保留了 d3d9.dll(2010 年的)。这为我解决了这个问题。
答案3
我在 api-ms-win 消息方面遇到了同样的问题:我无法在我的计算机上运行任何程序,唯一可以运行的浏览器是 Google Chrome。
当我在 Google 上发现 Windows 更新是导致此问题的原因时,我解决了该问题。起初我无法卸载最新更新,因此我将系统恢复到更新前的最后日期(主要是安全更新)。
从操作中心选择将计算机恢复到较早的时间。恢复计算机后,当然要将 Windows 更新设置更改为手动。
答案4
考虑到这是一个重要的文件,尝试了 sfc /scannow 来确认系统文件是否全部到位?