dll's missing when launch on win7_32, runs fine on win8.1_32 (and win10_64) ?



  • why would it work just fine on win 8.1 but throw this dialog on win 7? i have every single software update applied to win 7.

    0_1502759683332_Screen Shot 2017-08-14 at 6.11.20 PM.png


  • Moderators

    @davecotter Did you try to google for this DLL? Apparently it is missing on the Win7 machine.



  • yes i did and that doesn't help. i need a way to be able to deploy to win 7 without the USER having to google for this dll


  • Moderators

    @davecotter I didn't ask user to google for it. You need to find out what it is and what needs to be installed on the target machine in order to have this DLL.


  • Moderators

    @davecotter What Qt version do you use? Did you build it by yourself?


  • Moderators

    How did you deploy your app and which compiler are you using? What files did you include in your deployment package?

    Note that the missing dll is an api redirection dll so the actual file name you need is not what is shown in the message.

    Looks like you're missing either compiler runtime libraries or the ucrt component. If its the first one then if you're using VS as a compiler you can fix that by either installing the runtime package for your compiler (usually located in the "Redist" directory somewhere in your VS installation) or copy just the few needed dlls (windeployqt does that for you).

    For the ucrt check if you have this update installed: Update for Universal C Runtime in Windows. I know you said you've got "every single software update applied" but not all are installed automatically. Some need to be applied manually or by app installers.



  • @jsulm sorry, i was a bit terse in my reply. I meant to say, i googled a lot, and tried a lot of things, and could not find anything that definitively solved the problem.



  • @Chris-Kawa using VS2017 with the MSVC2015 runtimes. to deploy i use windeployqt.exe to get things rolling, but since that can't find the ms runtimes, i manually copy in the correct ones (yes they're definitely the correct ones, msvcp140, vcruntime140, and ucrtbase). i know they're correct since it runs fine on win 8.1, which we know DOES include this missing dll in the OS via software update, while win7 does not.
    and yes i know they're just api redir, the trouble is i don't know what i REALLY need to include in my dist.

    is it perhaps that these runtimes or ucrtbase are incompatible with win7? i HAVE manually installed KB2999226, it does not seem to help



  • Hi @davecotter

    You can determine the list of dependencies with the program DEPENDS.EXE: http://www.dependencywalker.com/

    -Michael.



  • okay but i don't know what this means. am i expected to include all these DLLs in my exe directory? sorry i'm just learning about all this stuff

    0_1502814449573_Screen Shot 2017-08-15 at 9.26.58 AM.png



  • Hi, I recently deployed one of my Qt programs (with MSVC2015 runtimes) to about a dozen Windows 7 SP1 computers, using the same method of including ucrtbase.dll, vcruntime140.dll and msvcp140.dll along with the usual Qt5core.dll, platform subdir etc.
    On all of them except one this worked like a charm, but one PC gave a similar error like yours. I solved it by downloading and installing the VS2015 VCRedist package.
    So it seems that (contrary to prior versions of VS) that the VCRedist package does some more fiddling behind the curtains than just copying those 3 dlls mentioned above to C:\Windows\SysWOW64...

    P.S. Also, as others probably have mentioned, those API-MS-WIN- dlls are dummy files (i.e. false positives from Dependency Walker) that are a part of Microsoft's refactoring efforts on Windiows, they shouldn't be copied and are not a part of the deployment problem.



  • @hskoglund i tried that, sadly no dice. same exact error as in the first screen shot. note i had installed KB2999226 previously, but i don't see how that could interfere. should i attempt a clean wipe of the OS and reinstall from scratch, and then ONLY install the VCRedist pkg? (i loathe that only because doing all the software updates AFTER the install takes a long time and much babysitting). also note i have Windows 7 "Enterprise", though that shouldn't make a diff (and yes, SP1 is installed). also this is a tryout OS (not yet activated), though that TOO shouldn't interfere?



  • Hi, no, different versions of Win7 like "Enterprise" or activation or not shouldn't matter. And a wipe (shudder) is also a waste of time I think.

    I looked a bit more into my .zip file that I used to deploy, apart from the usual Qtxxx.dlls I also have D3Dcompiler_47.dll, opengl32sw.dll, libGLESV2.dll and libEGL.dll. Assume you have the same files, right?

    Some more tips: on that troublesome Win7 PC, try loading your program into Dependency Walker and hit F7 to begin profiling it. When it aborts with the error, Dependency Walker's log window might show some hints of why.
    Also, try to see if you can reproduce the error on that PC with a simple test program, like an empty Widgets program. BTW: your program is Widget flavored and no QML, just checking?



  • yes i have the same extra 4 dlls you mention.
    yes widgets
    here's the log:

    --------------------------------------------------------------------------------
    Starting profile on 8/15/2017 at 1:11:37 PM
    
    Operating System: Microsoft Windows NT/2000/XP/2003/Vista based Enterprise (32-bit), version 6.01.7601 Service Pack 1
    Program Executable: z:\users\davec\developer\depot\kjams\development\qt\build\win_32\kjams 2.app\contents\windows\KJAMS 2.EXE
    Program Arguments: 
    Starting Directory: Z:\Users\davec\Developer\depot\kJams\Development\qt\build\win_32\kJams 2.app\Contents\Windows\
    Search Path: C:\Program Files\Parallels\Parallels Tools\Applications;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\
    
    Options Selected:
         Simulate ShellExecute by inserting any App Paths directories into the PATH environment variable.
         Log DllMain calls for process attach and process detach messages.
         Hook the process to gather more detailed dependency information.
         Log LoadLibrary function calls.
         Log GetProcAddress function calls.
         Log debug output messages.
         Use full paths when logging file names.
         Automatically open and profile child processes.
    --------------------------------------------------------------------------------
    
    Started "z:\users\davec\developer\depot\kjams\development\qt\build\win_32\kjams 2.app\contents\windows\KJAMS 2.EXE" (process 0xF00) at address 0x00AD0000.  Successfully hooked module.
    Loaded "c:\windows\system32\NTDLL.DLL" at address 0x77360000.  Successfully hooked module.
    Loaded "c:\windows\system32\KERNEL32.DLL" at address 0x76470000.  Successfully hooked module.
    Loaded "c:\windows\system32\KERNELBASE.DLL" at address 0x75320000.  Successfully hooked module.
    DllMain(0x75320000, DLL_PROCESS_ATTACH, 0x00000000) in "c:\windows\system32\KERNELBASE.DLL" called.
    DllMain(0x75320000, DLL_PROCESS_ATTACH, 0x00000000) in "c:\windows\system32\KERNELBASE.DLL" returned 1 (0x1).
    DllMain(0x76470000, DLL_PROCESS_ATTACH, 0x00000000) in "c:\windows\system32\KERNEL32.DLL" called.
    DllMain(0x76470000, DLL_PROCESS_ATTACH, 0x00000000) in "c:\windows\system32\KERNEL32.DLL" returned 1 (0x1).
    Injected "c:\program files\dependency walker\DEPENDS.DLL" at address 0x08370000.
    DllMain(0x08370000, DLL_PROCESS_ATTACH, 0x00000000) in "c:\program files\dependency walker\DEPENDS.DLL" called.
    DllMain(0x08370000, DLL_PROCESS_ATTACH, 0x00000000) in "c:\program files\dependency walker\DEPENDS.DLL" returned 1 (0x1).
    Loaded "c:\windows\system32\SHELL32.DLL" at address 0x755E0000.  Successfully hooked module.
    Loaded "c:\windows\system32\MSVCRT.DLL" at address 0x76A40000.  Successfully hooked module.
    Loaded "c:\windows\system32\SHLWAPI.DLL" at address 0x77300000.  Successfully hooked module.
    Loaded "c:\windows\system32\GDI32.DLL" at address 0x76F50000.  Successfully hooked module.
    Loaded "c:\windows\system32\USER32.DLL" at address 0x76E50000.  Successfully hooked module.
    Loaded "c:\windows\system32\LPK.DLL" at address 0x765A0000.  Successfully hooked module.
    Loaded "c:\windows\system32\USP10.DLL" at address 0x76DB0000.  Successfully hooked module.
    Loaded "z:\users\davec\developer\depot\kjams\development\qt\build\win_32\kjams 2.app\contents\windows\CFLITE.DLL" at address 0x6C390000.  Successfully hooked module.
    Loaded "z:\users\davec\developer\depot\kjams\development\qt\build\win_32\kjams 2.app\contents\windows\ICUUC40.DLL" at address 0x6C2A0000.  Successfully hooked module.
    Loaded "z:\users\davec\developer\depot\kjams\development\qt\build\win_32\kjams 2.app\contents\windows\ICUDT40.DLL" at address 0x69B70000.  Successfully hooked module.
    Loaded "c:\windows\system32\ADVAPI32.DLL" at address 0x77250000.  Successfully hooked module.
    Loaded "c:\windows\system32\SECHOST.DLL" at address 0x774D0000.  Successfully hooked module.
    Loaded "c:\windows\system32\RPCRT4.DLL" at address 0x77500000.  Successfully hooked module.
    Loaded "c:\windows\winsxs\x86_microsoft.vc80.crt_1fc8b3b9a1e18e3b_8.0.50727.4940_none_d08cc06a442b34fc\MSVCR80.DLL" at address 0x6D0A0000.  Successfully hooked module.
    Loaded "z:\users\davec\developer\depot\kjams\development\qt\build\win_32\kjams 2.app\contents\windows\ICUIN40.DLL" at address 0x69A70000.  Successfully hooked module.
    Loaded "z:\users\davec\developer\depot\kjams\development\qt\build\win_32\kjams 2.app\contents\windows\LIBSSL-43.DLL" at address 0x71C80000.  Successfully hooked module.
    Loaded "z:\users\davec\developer\depot\kjams\development\qt\build\win_32\kjams 2.app\contents\windows\LIBCRYPTO-41.DLL" at address 0x69910000.  Successfully hooked module.
    Loaded "c:\windows\system32\WS2_32.DLL" at address 0x755A0000.  Successfully hooked module.
    Loaded "c:\windows\system32\NSI.DLL" at address 0x774B0000.  Successfully hooked module.
    Loaded "c:\windows\system32\OLE32.DLL" at address 0x76760000.  Successfully hooked module.
    Loaded "c:\windows\system32\OLEAUT32.DLL" at address 0x76B70000.  Successfully hooked module.
    Loaded "z:\users\davec\developer\depot\kjams\development\qt\build\win_32\kjams 2.app\contents\windows\VCRUNTIME140.DLL" at address 0x71EB0000.  Successfully hooked module.
    Loaded "c:\windows\system32\API-MS-WIN-CRT-RUNTIME-L1-1-0.DLL" at address 0x74050000.  Successfully hooked module.
    Loaded "z:\users\davec\developer\depot\kjams\development\qt\build\win_32\kjams 2.app\contents\windows\UCRTBASE.DLL" at address 0x697F0000.  Successfully hooked module.
    Loaded "c:\windows\system32\API-MS-WIN-CORE-TIMEZONE-L1-1-0.DLL" at address 0x72000000.  Successfully hooked module.
    Loaded "c:\windows\system32\API-MS-WIN-CORE-FILE-L2-1-0.DLL" at address 0x71EA0000.  Successfully hooked module.
    Loaded "c:\windows\system32\API-MS-WIN-CORE-LOCALIZATION-L1-2-0.DLL" at address 0x71F40000.  Successfully hooked module.
    Loaded "c:\windows\system32\API-MS-WIN-CORE-SYNCH-L1-2-0.DLL" at address 0x6DB80000.  Successfully hooked module.
    Loaded "c:\windows\system32\API-MS-WIN-CORE-PROCESSTHREADS-L1-1-1.DLL" at address 0x71190000.  Successfully hooked module.
    Loaded "c:\windows\system32\API-MS-WIN-CORE-FILE-L1-2-0.DLL" at address 0x71C70000.  Successfully hooked module.
    Loaded "c:\windows\system32\API-MS-WIN-CRT-STRING-L1-1-0.DLL" at address 0x71120000.  Successfully hooked module.
    Loaded "c:\windows\system32\API-MS-WIN-CRT-HEAP-L1-1-0.DLL" at address 0x71180000.  Successfully hooked module.
    Loaded "c:\windows\system32\API-MS-WIN-CRT-STDIO-L1-1-0.DLL" at address 0x710D0000.  Successfully hooked module.
    Loaded "c:\windows\system32\API-MS-WIN-CRT-CONVERT-L1-1-0.DLL" at address 0x710E0000.  Successfully hooked module.
    Exited "z:\users\davec\developer\depot\kjams\development\qt\build\win_32\kjams 2.app\contents\windows\KJAMS 2.EXE" (process 0xF00) with code -1073741515 (0xC0000135).
    
    


  • in case it matters, here's my exe directory:

    0_1502828134603_Screen Shot 2017-08-15 at 1.15.12 PM.png



  • i notice it never did load 'msvcp140.dll'
    ?



  • Indeed, 'msvcp140.dll' should be there in the log pretty close to 'vcruntime140.dll' and 'ucrtbase.dll'. I think the culprit is the loading of 'msvcr80.dll' (runtime for Visual Studio 2005) together with the positively ancient icu40xx.dll files. Perhaps that runtime DLL for VS2005 prevents msvcp140.dll from loading.
    Any chance you could upgrade those files to icu59?



  • @hskoglund said in dll's missing when launch on win7_32, runs fine on win8.1_32 (and win10_64) ?:

    Perhaps that runtime DLL for VS2005

    a very good call. i shall thy this forthwith!



  • @davecotter Note this's just a guess, because your app works fine on Win8 and Win10, but it's worth a shot...



  • okay same story :(
    i got it running with icu75 (the only dist with both 32 and 64 binaries)
    i had to install the vs2010 runtimes, but after that, same exact error message as in first screenshot.
    here's the new logs from depwalker:

    --------------------------------------------------------------------------------
    Starting profile on 8/16/2017 at 8:29:38 AM
    
    Operating System: Microsoft Windows NT/2000/XP/2003/Vista based Enterprise (32-bit), version 6.01.7601 Service Pack 1
    Program Executable: z:\users\davec\developer\depot\kjams\development\qt\build\win_32\kjams 2.app\contents\windows\KJAMS 2.EXE
    Program Arguments: 
    Starting Directory: Z:\Users\davec\Developer\depot\kJams\Development\qt\build\win_32\kJams 2.app\Contents\Windows\
    Search Path: C:\Program Files\Parallels\Parallels Tools\Applications;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\
    
    Options Selected:
         Simulate ShellExecute by inserting any App Paths directories into the PATH environment variable.
         Log DllMain calls for process attach and process detach messages.
         Hook the process to gather more detailed dependency information.
         Log LoadLibrary function calls.
         Log GetProcAddress function calls.
         Log debug output messages.
         Use full paths when logging file names.
         Automatically open and profile child processes.
    --------------------------------------------------------------------------------
    
    Started "z:\users\davec\developer\depot\kjams\development\qt\build\win_32\kjams 2.app\contents\windows\KJAMS 2.EXE" (process 0x940) at address 0x00270000.  Successfully hooked module.
    Loaded "c:\windows\system32\NTDLL.DLL" at address 0x77360000.  Successfully hooked module.
    Loaded "c:\windows\system32\KERNEL32.DLL" at address 0x76470000.  Successfully hooked module.
    Loaded "c:\windows\system32\KERNELBASE.DLL" at address 0x75320000.  Successfully hooked module.
    DllMain(0x75320000, DLL_PROCESS_ATTACH, 0x00000000) in "c:\windows\system32\KERNELBASE.DLL" called.
    DllMain(0x75320000, DLL_PROCESS_ATTACH, 0x00000000) in "c:\windows\system32\KERNELBASE.DLL" returned 1 (0x1).
    DllMain(0x76470000, DLL_PROCESS_ATTACH, 0x00000000) in "c:\windows\system32\KERNEL32.DLL" called.
    DllMain(0x76470000, DLL_PROCESS_ATTACH, 0x00000000) in "c:\windows\system32\KERNEL32.DLL" returned 1 (0x1).
    Injected "c:\program files\dependency walker\DEPENDS.DLL" at address 0x08370000.
    DllMain(0x08370000, DLL_PROCESS_ATTACH, 0x00000000) in "c:\program files\dependency walker\DEPENDS.DLL" called.
    DllMain(0x08370000, DLL_PROCESS_ATTACH, 0x00000000) in "c:\program files\dependency walker\DEPENDS.DLL" returned 1 (0x1).
    Loaded "c:\windows\system32\SHELL32.DLL" at address 0x755E0000.  Successfully hooked module.
    Loaded "c:\windows\system32\MSVCRT.DLL" at address 0x76A40000.  Successfully hooked module.
    Loaded "c:\windows\system32\SHLWAPI.DLL" at address 0x77300000.  Successfully hooked module.
    Loaded "c:\windows\system32\GDI32.DLL" at address 0x76F50000.  Successfully hooked module.
    Loaded "c:\windows\system32\USER32.DLL" at address 0x76E50000.  Successfully hooked module.
    Loaded "c:\windows\system32\LPK.DLL" at address 0x765A0000.  Successfully hooked module.
    Loaded "c:\windows\system32\USP10.DLL" at address 0x76DB0000.  Successfully hooked module.
    Loaded "z:\users\davec\developer\depot\kjams\development\qt\build\win_32\kjams 2.app\contents\windows\CFLITE.DLL" at address 0x6C390000.  Successfully hooked module.
    Loaded "z:\users\davec\developer\depot\kjams\development\qt\build\win_32\kjams 2.app\contents\windows\ICUUC57.DLL" at address 0x4A800000.  Successfully hooked module.
    Loaded "c:\windows\system32\ADVAPI32.DLL" at address 0x77250000.  Successfully hooked module.
    Loaded "c:\windows\system32\SECHOST.DLL" at address 0x774D0000.  Successfully hooked module.
    Loaded "c:\windows\system32\RPCRT4.DLL" at address 0x77500000.  Successfully hooked module.
    Loaded "z:\users\davec\developer\depot\kjams\development\qt\build\win_32\kjams 2.app\contents\windows\ICUDT57.DLL" at address 0x66E50000.  Successfully hooked module.
    Loaded "c:\windows\system32\MSVCR100.DLL" at address 0x6C1D0000.  Successfully hooked module.
    Loaded "z:\users\davec\developer\depot\kjams\development\qt\build\win_32\kjams 2.app\contents\windows\ICUIN57.DLL" at address 0x00410000.  Successfully hooked module.
    Loaded "c:\windows\system32\MSVCP100.DLL" at address 0x6A9C0000.  Successfully hooked module.
    Loaded "z:\users\davec\developer\depot\kjams\development\qt\build\win_32\kjams 2.app\contents\windows\LIBSSL-43.DLL" at address 0x6C340000.  Successfully hooked module.
    Loaded "z:\users\davec\developer\depot\kjams\development\qt\build\win_32\kjams 2.app\contents\windows\LIBCRYPTO-41.DLL" at address 0x69B90000.  Successfully hooked module.
    Loaded "c:\windows\system32\WS2_32.DLL" at address 0x755A0000.  Successfully hooked module.
    Loaded "c:\windows\system32\NSI.DLL" at address 0x774B0000.  Successfully hooked module.
    Loaded "c:\windows\system32\OLE32.DLL" at address 0x76760000.  Successfully hooked module.
    Loaded "c:\windows\system32\OLEAUT32.DLL" at address 0x76B70000.  Successfully hooked module.
    Loaded "z:\users\davec\developer\depot\kjams\development\qt\build\win_32\kjams 2.app\contents\windows\VCRUNTIME140.DLL" at address 0x71D20000.  Successfully hooked module.
    Loaded "c:\windows\system32\API-MS-WIN-CRT-RUNTIME-L1-1-0.DLL" at address 0x71D10000.  Successfully hooked module.
    Loaded "z:\users\davec\developer\depot\kjams\development\qt\build\win_32\kjams 2.app\contents\windows\UCRTBASE.DLL" at address 0x69A70000.  Successfully hooked module.
    Loaded "c:\windows\system32\API-MS-WIN-CORE-TIMEZONE-L1-1-0.DLL" at address 0x71D00000.  Successfully hooked module.
    Loaded "c:\windows\system32\API-MS-WIN-CORE-FILE-L2-1-0.DLL" at address 0x71CC0000.  Successfully hooked module.
    Loaded "c:\windows\system32\API-MS-WIN-CORE-LOCALIZATION-L1-2-0.DLL" at address 0x71C70000.  Successfully hooked module.
    Loaded "c:\windows\system32\API-MS-WIN-CORE-SYNCH-L1-2-0.DLL" at address 0x6DB80000.  Successfully hooked module.
    Loaded "c:\windows\system32\API-MS-WIN-CORE-PROCESSTHREADS-L1-1-1.DLL" at address 0x71120000.  Successfully hooked module.
    Loaded "c:\windows\system32\API-MS-WIN-CORE-FILE-L1-2-0.DLL" at address 0x70200000.  Successfully hooked module.
    Loaded "c:\windows\system32\API-MS-WIN-CRT-STRING-L1-1-0.DLL" at address 0x701F0000.  Successfully hooked module.
    Loaded "c:\windows\system32\API-MS-WIN-CRT-HEAP-L1-1-0.DLL" at address 0x701E0000.  Successfully hooked module.
    Loaded "c:\windows\system32\API-MS-WIN-CRT-STDIO-L1-1-0.DLL" at address 0x701D0000.  Successfully hooked module.
    Loaded "c:\windows\system32\API-MS-WIN-CRT-CONVERT-L1-1-0.DLL" at address 0x6FFD0000.  Successfully hooked module.
    Exited "z:\users\davec\developer\depot\kjams\development\qt\build\win_32\kjams 2.app\contents\windows\KJAMS 2.EXE" (process 0x940) with code -1073741515 (0xC0000135).
    
    


  • Hi, hmmm got 2 suggestions:
    try a simple vanilla Widgets program to make sure your Win7 isn't out of whack,
    and to completely stamp out the possibility of the different VC runtimes clobbering each other, you don't happen to have an old copy of Visual 2010 around? If so, you could download Qt 5.5.1 (the last version that had prebuilt binaries for MSVC2010) and test your app on it. That way, both your code and the ICU dlls would depend on just msvcr100.dll and msvcp100.dll.


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.