[SOLVED] Windows 7 deployement problem



  • Hi all,

    I'm trying to run a programm I wrote using Qt5 beta 2, and while everything runs fine on my computer, I'm unable to start the program from another computer :(

    for now, I tried to identify all the DLL that my program requires. Here is the list :

    D3DCOMPILER_43.DLL
    ICUDT49.DLL
    ICUIN49.DLL
    ICUUC49.DLL
    LIBEGL.DLL
    LIBGLESV2.DLL
    QTCORE5.DLL
    QTGUI5.DLL
    QTMULTIMEDIA5.DLL
    QTMULTIMEDIAWIDGETS5.DLL
    QTNETWORK5.DLL
    QTOPENGL5.DLL
    QTPRINTSUPPORT5.DLL
    QTQML5.DLL
    QTQUICK5.DLL
    QTSQL5.DLL
    QTV85.DLL
    QTWEBKITWIDGETS5.DLL
    QTWIDGETS5.DLL

    But, while I'm able to start my program with these libs from my computer without having qt libs on my PATH (C:\Qt5.0.0beta2\5.0.0-beta2\msvc2010\bin), the program still doesn't start on another computer.

    I tried to but the whole bin directory content on the other computer, the result is always the same, although Dependency walker says that everything seems ok (no dll is missing)

    When I double-click on the .exe file, simply nothing happens !

    So I don't understand what I am missing here :(

    Please help me before I hang myself !!

    Thank you

    PS : using windows 7 64bits and compiling in 32bits using msvc2010



  • Some additional information...

    I just discover the Profiling feature of Dependency Walker, and found that my program doesn't find a valid plugin platform (??!!), see the output below :

    bq.

    Starting profile on 10/12/2012 at 15:17:21

    Operating System: Microsoft Windows NT/2000/XP/2003/Vista based Server, Enterprise (64-bit), version 6.01.7600
    Program Executable: c:\qcss\qcss\qcss\QCSS.EXE
    Program Arguments:
    Starting Directory: C:\QCss\QCss\QCss
    Search Path: C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0;C:\IBM\WebSphere\AppServer\java\bin;C:\ClamWin\bin

    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.
    Automatically open and profile child processes.

    Started "QCSS.EXE" (process 0x2194) at address 0x00C60000. Successfully hooked module.
    Loaded "NTDLL.DLL" at address 0x76EA0000. Successfully hooked module.
    Loaded "KERNEL32.DLL" at address 0x763D0000. Successfully hooked module.
    Loaded "KERNELBASE.DLL" at address 0x76A10000. Successfully hooked module.

    [...]

    GetProcAddress(0x763D0000 [KERNEL32.DLL], "FlsAlloc") called from "LIBEGL.DLL" at address 0x7392D3B7 and returned 0x763E1F22.
    GetProcAddress(0x763D0000 [KERNEL32.DLL], "FlsGetValue") called from "LIBEGL.DLL" at address 0x7392D3C4 and returned 0x763E123D.
    GetProcAddress(0x763D0000 [KERNEL32.DLL], "FlsSetValue") called from "LIBEGL.DLL" at address 0x7392D3D1 and returned 0x763E18E4.
    GetProcAddress(0x763D0000 [KERNEL32.DLL], "FlsFree") called from "LIBEGL.DLL" at address 0x7392D3DE and returned 0x763E3954.
    DllMain(0x73920000, DLL_PROCESS_ATTACH, 0x0028F7D0) in "LIBEGL.DLL" returned 1 (0x1).
    DllMain(0x6D530000, DLL_PROCESS_ATTACH, 0x0028F7D0) in "QTWEBKITWIDGETS5.DLL" called.
    DllMain(0x6D530000, DLL_PROCESS_ATTACH, 0x0028F7D0) in "QTWEBKITWIDGETS5.DLL" returned 1 (0x1).
    LoadLibraryW("ADVAPI32.DLL") called from "MSVCR100.DLL" at address 0x6F0BB4AD.
    LoadLibraryW("ADVAPI32.DLL") returned 0x765E0000.
    GetProcAddress(0x765E0000 [ADVAPI32.DLL], "SystemFunction036") called from "MSVCR100.DLL" at address 0x6F0BB4D6 and returned 0x765E1919.
    *Failed to load platform plugin "windows". Available platforms are: *

    DllMain(0x752D0000, DLL_PROCESS_DETACH, 0x00000001) in "IMM32.DLL" called.
    DllMain(0x752D0000, DLL_PROCESS_DETACH, 0x00000001) in "IMM32.DLL" returned 1 (0x1).
    DllMain(0x762D0000, DLL_PROCESS_DETACH, 0x00000001) in "MSCTF.DLL" called.

    [...]

    Exited "QCSS.EXE" (process 0x2194) with code 1 (0x1).
    bq.


  • Moderators

    Copy the plugin together with libraries (IIRC, it should reside in <exe root>/plugins/platform, but my memory is not good in that respect).



  • my program doesn't have any plugin (and so there isn't any plugins directory within my exe output root directory :-/ )


  • Moderators

    It is Qt platform plugin for Windows, needed by all Qt5 apps. I'm on Linux, for me the path to find this beast is: <Qt dir>/qtbase/plugins/platforms/libxcb.so. For you it will probably be windows.dll or so.



  • Oh, it seems that my program is almost working now. After copying windows.dll I was still having some problem (no icon in my toolbar for example) so I copied some other plugins (iconengines, imageformats, etc) and now the program is running but only if I launch it via Dependecy Walker Profiles menu

    Very weird


  • Moderators

    Wow. Now this has got really strange :)



  • OK. I succeed to start the application without Depency Walker... I had to create a qt.conf file then :

    bq. [Paths]
    Plugins = plugins

    I don't know why, though....

    Thank you so much for your help sierdzio !


  • Moderators

    Pleasure, happy coding. Please mark the thread as [Solved] if you consider the matter to be clear.



  • I've used the Windows Event Viewer before to identify missing dependencies. (Control Panel-> System and Security -> Administrative Tools ->Event Viewer)
    When you run an executable and a dependency is missing frequently you'll get an event log specifying exactly what you are missing.

    I've used this before when building installers for DirectX projects, though I don't know if this would work for Qt.


Log in to reply
 

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