赢7,64位,DLL的问题

我的可执行文件有问题。 我在我的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'而误导,...问题可能完全在于别处。


    此问题与缺少Visual Studio“可再发行组件包”有关。 基于依赖关系散步并不清楚哪一个是缺失的,但我会首先尝试一个与您的编译器版本相对应的版本,看看是否正常运行:

    VS 2015

    VS 2013

    VS 2010

    VS 2008

    我遇到了这个问题,因为我正在使用VS编译器,但不是完整的VS环境。


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

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

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

  • 编译你的项目并把可执行文件放到一个空文件夹中: myproject.exe
  • 尝试执行它,它会检索一个错误(丢失DLL ...)。
  • 现在,从Qt中复制所有dll (在我的情况下,它们位于C: Qt Qt5.1.1 5.1.1 msvc2012_64_opengl bin)到该文件夹​​中。
  • 尝试再次执行,它可能会正常工作。
  • 开始逐步删除,并尝试每次您的可执行文件仍然工作,试图离开最低必要的DLL。
  • 当你将所有的DLL放在同一个文件夹中时,可以更容易地找到它们中的哪些无效(XML,webkit ...无论如何),因此这种方法不会超过五分钟。


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

    在这种情况下,依赖沃克是误导,并导致我失去时间。 所以,从第一篇文章中“失踪”DLL的列表是没有用的,你可以忽略它。

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

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

    在我的情况下,它不是3 .ocx文件,但缺少MySQL连接器DLL。 在服务器上安装用于.Net的MySQL连接器后,问题消失。

    因此,简而言之,解决方法是:检查您的所有项目参考是否存在。

    干杯

    链接地址: http://www.djcxy.com/p/26821.html

    上一篇: Win 7, 64 bit, dll problems

    下一篇: Creating R package containing C++ on Windows