[windows] 赢7,64位,DLL的问题



Answers

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

一开始我以为这是一个MSVC / Windows DLL问题,但正如BorisP所说,问题出在我的项目依赖关系中。 关键是“ 如何知道Qt5中的项目依赖关系? ”。

因为我没有找到任何明确的方法来知道它(依赖Wolker并没有多少帮助我......),所以我采用了下一个“反向过程”,这个过程不超过5分钟,避免了Dll依赖关系带来的许多麻烦:

  1. 编译你的项目并把可执行文件放到一个空文件夹中: myproject.exe
  2. 尝试执行它,它会检索一个错误(丢失DLL ...)。
  3. 现在,从Qt中复制所有dll (在我的情况下,它们位于C:\ Qt \ Qt5.1.1 \ 5.1.1 \ msvc2012_64_opengl \ bin)到该文件夹​​中。
  4. 尝试再次执行,它可能会正常工作。
  5. 开始逐步删除,并尝试每次您的可执行文件仍然工作,试图离开最低必要的DLL。

当你将所有的DLL放在同一个文件夹中时,可以更容易地找到它们中的哪些无效(XML,webkit ...无论如何),因此这种方法不会超过五分钟。

Question

我的可执行文件有问题。 我在我的Win-7 64位开发盒上运行这个C ++ 32位可执行文件,该开发盒也具有所有这些MS应用程序(Visual Studio 2008 + 2010,TFS,SDK,MS Office)......并且它仍然运行良好。

现在我得到了同样的程序的客户端安装,并要求用干净的Win-7安装来测试它。 因此,我获得了Win-7 64位VM Ware并将其更新为Win-7 SP 1(与我的开发人员盒完全相同的版本)。 但是,在我的开发者框中,一切都很好,该程序不适用于VW Ware(30天试用版)框。

x86依赖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,发现它们实际上已经是Win-7的一部分了(有些网站声称属于Win-8和Win 2012服务器)。

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

  • 运行'sfc / scannow'
  • 安装Visual Studio 2008 SP1运行时可执行文件

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

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

任何想法如何解决这个问题? 我试图在MS页面上找到合适的下载/修复,但失败了。

问候,托马斯

解决了我的问题后,我想报告发现的内容,但因为问题已关闭,所以无法将其作为答案发布。

实际上,所有的DLLs都被依赖walker工具报告了,而nameley则是这些工具

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

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

在我的情况下,3 OCX文件的注册丢失,然后一切都很好,但依赖walker工具仍然列出所有非常相同的DLL,即使现在程序运行良好。

它的要点:正如其他人所说的那样,该工具现在有点过时了,并且不能适用于较新的操作系统。 因此,请保持眼睛畅通,不要因错过'API-MS-WIN-CORE-COM-L1-1-0.DLL'而误导,...问题可能完全在于别处。




在新安装的Windows 7上安装MSSQL Management Studio 2014,经过为期2天的荒谬战斗,我们的客户解决了这个问题。




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




如前所述,DCOMP是VC ++可再发行组件(实现OpenMP运行时)的一部分,是唯一真正缺少的组件。 其余的都是虚假的报道。

具体来说,API-MS-WIN-XXXX.DLL是API集合 - 实质上,自Windows 7以来逐渐引入了一个额外级别的调用间接方法 。依赖Walker开发在此之前似乎暂停,并且它无法正确处理API集。

所以没有什么可担心的。 你不会再错过任何东西。

找到丢失的真正需要的DLL(如果确实是这个问题)的一个更好的选择是运行ProcessMonitor并从故障向后退出,在所有系统路径中搜索特定DLL的失败探测序列。




这解决了我的问题。
如果已安装VS 2010可再发行组件包,请先卸载它,然后安装Microsoft Windows 7 SDK




在尝试新的Windows 7 OEM安装之后,我升级到Windows 10后,出现了这个问题。

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

C:\Windows10Upgrade\wimgapi.dll C:\Windows\System32\wimgapi.dll替换C:\Windows10Upgrade\wimgapi.dll C:\Windows\System32\wimgapi.dll




Related



Tags

windows windows   dll