Windows 7、64位、DLL问题

Windows 7、64位、DLL问题,windows,dll,Windows,Dll,我的可执行文件有问题。我在我的WiNoWS7 64位开发框上运行这个C++ 32位可执行文件,它也有所有的微软应用程序(Visual Studio 2008 + 2010,TFS,SDK,微软Office)… 它仍然运行得很好 现在我得到了同样程序的客户端安装,并被要求用干净的Windows7安装来测试它。因此,我得到了一个Windows7 64位VMware,并将其更新为Windows7 SP 1(与我的开发者盒正在调整的版本完全相同)。 但是,虽然在我的开发者箱中一切正常,但该程序不能与VM

我的可执行文件有问题。我在我的WiNoWS7 64位开发框上运行这个C++ 32位可执行文件,它也有所有的微软应用程序(Visual Studio 2008 + 2010,TFS,SDK,微软Office)… 它仍然运行得很好

现在我得到了同样程序的客户端安装,并被要求用干净的Windows7安装来测试它。因此,我得到了一个Windows7 64位VMware,并将其更新为Windows7 SP 1(与我的开发者盒正在调整的版本完全相同)。 但是,虽然在我的开发者箱中一切正常,但该程序不能与VMware(30天试用)箱一起使用

x86告诉我缺少以下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-SCALLING-L1-1-0.DLL
  • DCOMP.DLL
  • GPSVC.DLL
  • IESHIMS.DLL
我在谷歌上搜索那些API-MS-WIN-。。。DLL文件,并发现它们实际上应该已经是Windows7的一部分(尽管有些网站声称它们属于Windows8和WindowsServer2012)

我已经尝试了我找到的建议修复,它们是:

  • 正在运行“sfc/scannow”
  • 安装Visual Studio 2008 SP1运行时可执行文件
但这并没有解决任何问题-(

旁注:我的开发盒中也没有,而且似乎也不需要它们。例如,我的开发盒上的user32.dll没有链接到其中一个,而VMware上的安装却链接到其中一个

你知道如何解决这个问题吗? 我试图在Microsoft页面上找到合适的下载/修复程序,但失败了


解决我的问题后,我想报告我发现的情况,但我不能将此作为答案发布,因为问题已经结束

实际上,依赖项Walker工具报告丢失的所有DLL文件,即

* API-MS-WIN-CORE-...
类型DLL文件不是实际问题的一部分

在我的例子中,三个OCX文件的注册丢失了,之后一切都很好,但是依赖项Walker工具仍然像以前一样列出了所有非常相同的DLL文件,即使程序现在运行正常


要点:正如其他地方的人所说,该工具现在已经有点过时了,并且不能在更新的操作系统上正常工作。因此,请保持警惕,不要因为缺少“API-MS-WIN-CORE-COM-L1-1-0.DLL”而受到误导,……问题可能完全出在其他地方。

此问题与缺少Visual Studio有关“可再发行软件包。”根据依赖项遍历,不明显缺少哪一个,但我会先尝试与编译器版本对应的软件包,看看运行是否正常:

我遇到这个问题是因为我使用的是Visual Studio编译器,而不是完整的Visual Studio环境



敢于在这里注入新的链接:。SteinÅsmul,2018年11月29日。

这为我解决了这个问题:


如果已安装VisualStudio2010可再发行软件包,请卸载该软件包,然后安装。

我刚刚解决了相同的问题

在这种情况下是误导性的,导致我浪费时间。因此,第一篇文章中的“缺失”DLL文件列表没有帮助,您可能可以忽略它

解决方案是找到您的项目正在调用的引用,并检查它们是否真的安装在服务器上

@Ben Brammer,丢失哪三个.ocx文件并不重要,因为它们只在Leo T Abraham的项目中丢失。您的项目可能会调用其他DLL文件

在我的例子中,不是三个.ocx文件,而是缺少MySQL连接器DLL文件。在服务器上安装MySQL连接器for.NET后,问题消失了


P> >总之,解决方案是:检查所有的项目引用是否存在。

< P>我刚刚用MSCVC 2012解决了C++ QT5和WiNoWS7 64位的相同问题。 起初我认为这是MSVC/Windows DLL文件的问题,但正如BorisP所说,问题在于我的项目依赖关系。关键是“如何知道Qt5中的项目依赖关系?

由于我没有找到任何明确的方法来了解它(对我没有太多帮助…),因此我遵循了下一步的“反向过程”,该过程不超过5分钟,并避免了DLL文件依赖性带来的许多麻烦:

  • 编译项目并将可执行文件放入空文件夹:myproject.exe
  • 尝试执行它,它将检索错误(缺少DLL文件…)
  • 现在,将所有DLL文件从Qt(在我的例子中,它们位于C:\Qt\Qt5.1.1\5.1.1\msvc2012\u 64\u opengl\bin)复制到此文件夹
  • 再次尝试执行,它可能会正常工作
  • 开始逐步删除,并在每次可执行文件仍然工作时尝试,尽量保留最少的必需DLL文件

  • 当所有DLL文件都位于同一文件夹中时,更容易找到其中哪些文件无效(XML、WebKit等等),因此此方法不需要超过五分钟。

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

    此贡献并没有真正回答最初的问题,但考虑到此线程的命中率,我假设很多人都在处理API-MS-WIN-CORE库找不到的问题

    通过简单地更新Visual Studio,我解决了一个应用程序拒绝启动的问题,错误消息是找不到API-MS-WIN-CORE-WINRT-STRING-L1-1-0.DLL

    我不认为我的构建环境(Windows7 Pro SP1,VisualStudio Ultimate 2012)是完全混乱的,它在大多数情况下运行良好