为了账号安全,请及时绑定邮箱和手机立即绑定

Windows 7,64位,dll问题

/ 猿问

Windows 7,64位,dll问题

元芳怎么了 2019-08-03 03:03:05

Windows 7,64位,dll问题

我对我们的可执行文件有问题。我正在我的Windows 7 64位开发框上运行这个C+32位可执行文件,它也有所有的微软应用程序(VisualStudio 2008+2010,TFS,SDK,MicrosoftOffice).而且还很正常。

现在我得到了同一个程序的客户端安装,并被要求用一个干净的Windows 7安装来测试它。因此,我得到了一个Windows 7 64位VMware,并将其更新为Windows7SP1(与我的开发人员框正在调优的版本完全相同)。但是,尽管在我的开发人员框中,一切都很好,但该程序不适用于VMware(30天试用)盒。

x86依赖沃克告诉我缺少下列DLL文件:

  • API-MS-双赢核心-com-L1-1-0.dll
  • API-MS-双赢核心-WinRT-错误-L1-1-0.dll
  • API-MS-双赢核心-WinRT-L1-1-0.dll
  • API-MS-双赢核心-WinRT-ROBUFFER-L1-1-0.dll
  • API-MS-双赢核心-WinRT-String-L1-1-0.dll
  • API-MS-双赢-SHCORE-缩放-L1-1-0.dll
  • DCOMP.DLL
  • GPSVC.DLL
  • IESHIMS.DLL

我搜索了那些API-MS-双赢.DLL文件,并发现它们实际上应该已经是Windows 7的一部分(但有些站点声称它们属于Windows 8和WindowsServer 2012)。

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

  • 运作“证监会/扫描”
  • 安装VisualStudio 2008 SP1运行时可执行文件

但这并没有解决任何问题。-(

附带注意:我的开发盒也没有它们,而且似乎不需要它们。例如,我的框中的user32.dll没有链接到其中的一个,而在VMware上的安装是这样的。

有什么办法解决这个问题吗?我试图在Microsoft页面上找到合适的下载/修复程序,但失败了。


在解决了我的问题后,我想报告我发现了什么,但我不能把它作为答案,因为这个问题已经结束了。

实际上,DependencyWalker工具所报告的所有dll文件都丢失了,即

* API-MS-WIN-CORE-...

类型DLL文件不是实际问题的一部分。

在我的例子中,丢失了三个OCX文件的注册,之后一切都很好,但是DependencyWalker工具仍然列出了所有与以前完全相同的DLL文件,即使程序现在运行得很好。

它的要点是:正如其他人所说的那样,这个工具现在有点过时了,并不总是能在新的操作系统上正常工作。因此,请睁大眼睛,不要误以为错过了‘api-MS-win-core-com-l1-1-0.dll’,.问题可能完全在别处。



查看完整描述

3 回答

?
慕容3067478

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

Visual Studio 2015

VisualStudio 2013

VisualStudio 2010

VisualStudio 2008

遇到此问题是因为我使用的是VisualStudio编译器,而不是整个VisualStudio环境。


敢在这里插入一个新链接:最新支持的Visualc+下载Stein,Smul,29.11.2018.


查看完整回答
反对 回复 2019-08-05
?
MMTTMM

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

起初,我认为这是MSVC/WindowsDLL问题,但正如BorisP所说,问题在于我的项目依赖关系。关键是“如何了解Qt5中的项目依赖关系?".

由于我没有找到任何明确的方法来了解它(DependencyWolker对我帮助不大.),所以我遵循了下一个“逆过程”,这个过程不超过5分钟,并且避免了dlls依赖关系带来的很多头痛:

  1. 编译您的项目并将可执行文件带到一个空文件夹中:

    myproject.exe

  2. 尝试执行它,它将检索一个错误(缺少dlls.)。
  3. 现在,

    复制所有的dll

    从QT(在我的例子中,它们在C:\QT\Qt5.1.1\5.1.1\msvc 2012_64_OpenGL\bin中)到这个文件夹。
  4. 尝试再执行一次,可能会很好。
  5. 开始逐步删除,每次您的可执行文件仍然工作时都尝试删除,尝试保留最低限度的必要DLL。

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


查看完整回答
反对 回复 2019-08-05
?
收到一只叮咚


在这种情况下,依赖沃克是一种误导,使我失去了时间。因此,第一篇文章中的“缺失”dll列表是没有帮助的,您可能可以忽略它。

解决办法是找出哪些引用你的项目正在调用并检查它们是否真正安装在服务器上。

@BenBrammer,哪一个3.ocx文件丢失并不重要,因为它们只在LeoT亚伯拉罕的项目中丢失。您的项目可能会调用其他dll。

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

因此,简而言之,解决方案是:检查您的所有项目引用是否都在那里。



查看完整回答
反对 回复 2019-08-05
  • 3 回答
  • 0 关注
  • 76 浏览
我要回答

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信