[SOLVED] Windows 7 deployement problem
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 :
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 !!
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 :
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
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
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).
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 :-/ )
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
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 :
Plugins = plugins
I don't know why, though....
Thank you so much for your help sierdzio !
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.