首页 文章

Windows 7,64位,DLL问题

提问于
浏览
249

我的可执行文件有问题 . 我在我的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

我搜索了那些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文件的注册丢失,之后一切都很好,但依赖Walker工具仍然列出了所有相同的DLL文件,即使程序刚刚运行正常 .

它的要点:正如其他人所说的那样,该工具现在有点过时,并不总是适用于较新的操作系统 . 因此,请密切关注,不要错过'API-MS-WIN-CORE-COM-L1-1-0.DLL',......问题可能完全在其他地方 .

13 回答

  • 4

    建议还检查当前使用的内存量 . 事实证明,无法找到这些DLL是尝试在Visual Studio中运行程序(运行或调试)时出现的第一个症状 . 经过半个多小时的搔痒,搜索网页,运行procmon和任务管理器,并依赖,一个完全不同的程序,从一开始就一直在运行报告“内存不足;尝试停止一些程序”或一些这样 . 杀死Firefox,Thunderbird,procmon,依赖,一切都恢复了 .

  • 16

    此问题与缺少Visual Studio“可再发行组件包”有关 . 基于依赖性遍历缺少哪一个是不明显的,但我会首先尝试与您的编译器版本对应的那个,看看事情是否正常运行:

    Visual Studio 2015

    Visual Studio 2013

    Visual Studio 2010

    Visual Studio 2008

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


    敢于在这里注入新的链接:The latest supported Visual C++ downloads . SteinÅsmul,29.11.2018 .

  • 6

    我在尝试新的Windows 7 OEM安装后,遇到此问题,升级到Windows 10 .

    经过一些微软论坛搜索,我发现以下解决方案对我有用:

    将C:\ Windows10Upgrade \ wimgapi.dll替换为C:\ Windows \ System32 \ wimgapi.dll中的一个

  • 1

    如上所述,DCOMP是VC可再发行组件的一部分(实现OpenMP运行时),并且是唯一真正缺少的组件 . 其余的都是错误的报道 .

    具体来说,API-MS-WIN-XXXX.DLL是API集 - 自windows 7以来逐渐引入essentially, an extra level of call indirection . 依赖性walker开发在此之前很久就停止了,它无法正确处理API集 .

    所以没什么可担心的 . 你不会错过任何更多 .

    找到真正需要的DLL(如果确实是问题)的更好的替代方法是运行ProcessMonitor并从失败中倒退,在所有系统路径中搜索特定DLL的失败探测序列 .

  • 19

    这个贡献并没有真正回答最初的问题,但考虑到这个线程的命中率,我认为有很多人在处理API-MS-WIN-CORE-库无法找到的问题 .

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

    我不认为我的构建环境(Win7 Pro SP1,Visual Studio Ultimate 2012)完全搞砸了,它对我的大多数项目都很好 . 但在某些非常具体的情况下,我收到了错误消息(见下文) .

    从最初的CD版本(我忘了查找版本号)updating Visual Studio 11到版本11.0.61030.00更新4后,破损的项目再次运行 .

    我希望这有助于某人!

    Error message at application startup

  • 2

    新安装的Windows 7上的安装MSSQL Management Studio 2014在为期2天的荒谬战斗后解决了这个问题 .

  • 5

    我刚刚解决了同样的问题 .

    Dependency Walker在这种情况下具有误导性,导致我浪费时间 . 所以,第一篇文章中“丢失”的dll列表没有帮助,你可以忽略它 .

    解决方案是查找 your 项目正在调用的引用,并检查它们是否确实安装在服务器上 .

    @Ben Brammer,缺少3个.ocx文件并不重要,因为他们只缺少Leo T Abraham的项目 . 您的项目可能会调用其他dll .

    在我的例子中,它不是3个.ocx文件,但缺少MySQL连接器DLL . 在服务器上安装MySQL Connector for .Net后,问题就消失了 .

    因此,简而言之就是:检查所有项目引用是否存在 .

    干杯

  • 1

    这解决了我的问题 .
    卸载VS 2010可再发行软件包(如果已安装),然后安装Microsoft Windows 7 SDK

  • 1

    我也是,我刚刚用MSCVC 2012解决了C Qt5和W7 64位的相同问题 .

    一开始我觉得这是一个MSVC / windows dll问题,但正如BorisP所说,问题出在我的项目依赖项中 . 关键是“ How to know your project dependencies in Qt5? ” .

    因为我没有找到任何明确的方法来了解它(Dependency Wolker对我没有多大的帮助......),我接下来的“逆向程序”,不超过5分钟,避免了很多令人头疼的Dlls依赖:

    • 编译项目并将可执行文件转到空文件夹: myproject.exe

    • 尝试执行它,它将检索错误(缺少dlls ......) .

    • 现在,来自Qt的 copy all the dlls (在我的情况下,它们在C:\ Qt \ Qt5.1.1 \ _ 5.1.1 \ msvc2012_64_opengl \ bin中)到此文件夹 .

    • 尝试再次执行,它可能会正常工作 .

    • 开始逐步删除并在每次可执行文件仍然有效时尝试,尝试保留最少的必要DLL .

    当你在同一个文件夹中拥有所有DLL时,更容易找到哪些DLL无效(XML,webkit ......等等......),因此这种方法不会超过五分钟 .

  • 55

    我也遇到了这个问题,但是这里似乎是一个共同主题的解决方案,我在网上的其他地方看到的是“[重新安装可再发行组件包” . 但是,对我来说不起作用,因为运行我们产品的安装程序(安装可再发行组件包)来测试我们闪亮的新VS 2015版本时出现了问题 .

    出现此问题是因为列出的dll不在Visual Studio安装路径中(例如C:\ Program Files(x86)\ Microsoft Visual Studio 14.0 \ VC \ redist),因此尚未添加到安装中 . 这些api-ms-win- * dll作为Visual Studio 2015安装的一部分安装到Windows 10 SDK安装路径(例如C:\ Program Files(x86)\ Windows Kits \ 10 \ Redist) . 在Windows 10上安装工作正常,但在Windows 7上安装需要将这些dll添加到我们的产品安装中 . 有关详细信息,请参阅https://support.microsoft.com/en-us/kb/2999226,其中介绍了由VS 2015引起的这些依赖项的添加,并提供了各种Windows平台的下载;另见https://blogs.msdn.microsoft.com/vcblog/2015/03/03/introducing-the-universal-crt/,它描述了CRT库的重新设计 . 特别感兴趣的是 Headers 为 Distributing Software that uses the Universal CRT 的部分下的第6项:

    2015年9月11日更新:支持通用CRT的应用程序本地部署 . 要获取应用程序本地部署的二进制文件,请安装Windows 10的Windows软件开发工具包(SDK) . 二进制文件将安装到C:\ Program Files(x86)\ Windows Kits \ 10 \ Redist \ ucrt . 您需要使用您的应用程序复制所有DLL(请注意,在不同版本的Windows上,所需的DLL集是不同的,因此您必须包含所有DLL,以便程序在所有受支持的Windows版本上运行) .

  • 0

    我有同样的问题 . 花了几个小时在网上搜索后,我找到了一个解决方案 . 我把文件:combase.dll(C:\ windows \ system32)放在realese文件夹中并解决了 .

  • 0

    对于任何来到这里,但有photoshop问题的人:我的解决方案是卸载ms vc redistributable第一个x86和64 . 比安装一个appriopriate到Windows版本和架构(86或64) .

  • 11

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

相关问题