Win 7, 64 bit, dll problems

I have a problem with our executable. I'm running this C++ 32-bit executable on my Win-7 64-bit development box that also has all those MS applications (Visual Studio 2008 + 2010, TFS, SDK, MS Office)... And its still running just fine.

Now I got the client installation of the very same program and wwas asked to test it with a clean Win-7 installation. Thus i got I Win-7 64-bit VM Ware and updated it to Win-7 SP 1 (the very same version my developer box is tunning). But while on my developer box everything is fine the program does not work with the VW Ware (30 days trial) box.

The x86 dependency walker is telling me that the following DLLs are missing:

  • 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
  • I googled for those API-MS-WIN-... dlls and found they should actually already be part of Win-7 (some sites claiming the belong to Win-8 and Win 2012 server though).

    I already tried the suggested fixes I found, which are:

  • running 'sfc /scannow'
  • installing Visual Studio 2008 SP1 runtime executables
  • But that didn't solve anything. :-(

    Side note: My development box does not have them either, and does not seem to need them. For example the user32.dll on my box does not link against one of those, while the installation on the VM ware does.

    Any idea on how to fix this issue? I tried to find a suitable download / fix on the MS pages but failed.

    Regards, Thomas


    After solving my issue I wanted to report what I found out, and I can't post this as an answer because the question has been closed.

    Actually all the DLLs reported missing by the dependency walker tool, nameley those

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

    type DLLs were not part of the actual problem.

    In my case the registration of 3 OCX files was missing and after that everything was just fine, BUT dependency walker tool still listed all the very same DLLs as before even when the program was just running fine now.

    The gist of it: As someone elsewhere stated, the tool is a bit dated by now and does not always work properly with newer OS. Thus keep an eye open and don't get mislead by missing 'API-MS-WIN-CORE-COM-L1-1-0.DLL', ... the problem probably lies entirely elsewhere.


    This problem is related to missing the Visual studio "redistributable package." It is not obvious which one is missing based on the dependency walk, but I would try the one that corresponds with your compiler version first and see if things run properly:

    VS 2015

    VS 2013

    VS 2010

    VS 2008

    I ran into this problem because I am using the VS compilers, but not the full VS environment.


    Me too, I just resolved the same problem with C++ Qt5 and W7 64bits with MSCVC 2012.

    In the beginning I thought It was a MSVC/windows dll problem, but as BorisP said, the problem was in my project dependencies. The key is " How to know your project dependencies in Qt5? ".

    As I didn't find any clear way to know it (Dependency Wolker didn't help me a lot...), I followed next "inverse procedure" that takes no more than 5 minutes and avoid a lot of headaches with Dlls dependencies:

  • Compile your project and take the executable file to an empty folder: myproject.exe
  • Try to execute it, It will retrieve an error (missing dlls...).
  • Now, copy all the dlls from Qt (in my case they were in C:QtQt5.1.15.1.1msvc2012_64_openglbin) to this folder.
  • Try to execute again, it will probably works fine.
  • Start to delete progressively and try every time your executable still works, trying to leave the minimum necessary DLLs.
  • When you have all the DLLs in the same folder it is easier to find which of them are not valid (XML, webkit... whatever..) , consequently this method don't take more than five minutes.


    I just resolved same problem.

    Dependency Walker is misleading in this case and caused me to lose time. So, the list of "missing" dlls from first post is not helpful, you can probably ignore it.

    The solution is to find which references your project is calling and check if they are really installed on server.

    @Ben Brammer, it is not important which 3 .ocx files are missing because they are missing only for Leo T Abraham's project. Your project probably calls other dlls.

    In my case, it was not 3 .ocx files, but missing MySQL connector dll. After installing of MySQL Connector for .Net on server, the problem disappeared.

    So, in short solution is: check if all your project references are there.

    Cheers

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

    上一篇: 不能在R中加载dyn.load用Visual Studio编译的dll

    下一篇: 赢7,64位,DLL的问题