gollumullog gollumullog - 10 months ago 234
C++ Question

Application failed to start because it could not find or load the QT platform plugin "windows"

I have looked through all of the questions that appear to be related on stack overflow, and none of the solutions seem to help me.

I am building a Qt application with this setup:

  • Windows 7 Professional x64

  • Visual Studio 2012

  • Qt 5.2.0 built with
    configure -developer-build -debug-and-release -opensource -nomake examples -nomake tests -platform win32-msvc2012 -no-opengl

  • Project uses QtSingleApplication (qt-solutions)

  • Application is a 32 bit application

  • qmake run with the following: -makefile -spec win32-msvc2012

  • .pri uses
    QMAKE_CXX += /D_USING_V110_SDK71_

I can build and run my program fine on my development machine (noted above); I can also install and run the package from Program Files directory on dev machine.

When I install and run on a Windows Vista machine (multiple machines)

  • VC++ redist 2012 11.0.61030.0 installed

  • VC++ redist 2010 10.0.40219 installed

  • plus 2005, 2008 versions of redist

(also fails on a clean install of Windows 7)

I get:

Application failed to start because it could not find or load the QT platform plugin "windows"

So I followed the instructions and added a .platforms/ directory, and added qwindows.dll (also added qminimal.dll and qoffscreen.dll); I also added libEGL.dll, libGLESv2.dll (even though I shouldn't need them I don't think)

Once I added qoffscreen.dll I now get the additional message:
Available platform plugins are: offscreen

If I run through Dependency Walker I get this error listed:

GetProcAddress(0x76CA0000 [KERNEL32.DLL], "GetCurrentPackageId") called from "MSVCR110.DLL" at address 0x6AC6FDFA and returned NULL. Error: The specified procedure could not be found (127).

and then further down get the:

GetProcAddress(0x745A0000 [UXTHEME.DLL], "BufferedPaintUnInit") called from "COMCTL32.DLL" at address 0x745FFBF8 and returned 0x745AE18C.
This application failed to start because it could not find or load the Qt platform plugin "windows".

Available platform plugins are: offscreen.

Reinstalling the application may fix this problem.

Any ideas how to fix this dll issue?

Answer Source

Well I solved my issue, although I'm not sure what the difference is:

I copied every dll from my qt directory into both ./ and ./platforms of my application directory.

The application got past the error, but then crashed.

VERSION.dll was causing the crash (noted in dependency walker), so I removed it from both places.

The Application started up, so I systematically removed all unneeded dll's.

This got me back to the same state I had originally.

I then uninstalled my application and re-installed (with only the ./platforms/qwindows.dll file remaining), application works correctly.

So all I can assume is that I had an incorrect version of qwindows.dll in the platforms directory.