Statically linked app with Qt gives error: Failed to load platform plugin “windows”

前端 未结 5 1689
生来不讨喜
生来不讨喜 2020-12-31 13:27

I have built Qt 5.0.1 statically in VS 2010 under Windows 7 x64. The configuration parameters were

configure -debug-and-release -opensource -confirm-license          


        
5条回答
  •  鱼传尺愫
    2020-12-31 14:06

    To check what DLL are needed to deploy your application on Windows, use dependency Walker (http://www.dependencywalker.com/).

    According to the documentation page Qt for Windows - Deployment some DLL are required to deploy a Qt application on Windows platforms:

    • qwindows.dll
    • icudtXX.dll
    • icuinXX.dll
    • icuucXX.dll
    • libGLESv2.dll
    • libEGL.dll

    Depending on the compiler you use to compile the application, some other libraries may be required:

    • MSVC specific libraries:
      • msvcrXX.dll
      • msvcpXX.dll
    • MinGW specific libraries
      • libgcc_s_dw2-1.DLL
      • libstdc++-6.dll

    Note: in all these files, replace XX by the current version of the DLL on your system.

    If you didn't build Qt statically (default), you will also need Qt5 DLL depending on Qt module you use in your application. Example:

    • Qt5Core.dll
    • Qt5Test.dll
    • Qt5Network.dll
    • etc.

    All these DLL can be found in "bin" folder, under your Qt installation dir.

    EDIT

    Recently, Qt developers created a tool named windeployqt.exe which helps you to gather all required library to deploy an application:

    Usage: windeployqt [options] [file]
    Qt Deploy Tool 5.3.0
    
    The simplest way to use windeployqt is to add the bin directory of your Qt
    installation (e.g. ) to the PATH variable and then run:
      windeployqt 
    If ICU, ANGLE, etc. are not in the bin directory, they need to be in the PATH
    variable. If your application uses Qt Quick, run:
      windeployqt --qmldir  
    
    Options:
      -?, -h, --help            Displays this help.
      -v, --version             Displays version information.
      --dir          Use directory instead of binary directory.
      --libdir            Copy libraries to path.
      --debug                   Assume debug binaries.
      --release                 Assume release binaries.
      --force                   Force updating files.
      --dry-run                 Simulation mode. Behave normally, but do not
                                copy/update any files.
      --no-plugins              Skip plugin deployment.
      --no-libraries            Skip library deployment.
      --qmldir       Scan for QML-imports starting from directory.
      --no-quick-import         Skip deployment of Qt Quick imports.
      --no-translations         Skip deployment of translations.
      --no-system-d3d-compiler  Skip deployment of the system D3D compiler.
      --compiler-runtime        Deploy compiler runtime (Desktop only).
      --no-compiler-runtime     Do not deploy compiler runtime (Desktop only).
      --webkit2                 Deployment of WebKit2 (web process).
      --no-webkit2              Skip deployment of WebKit2.
      --json                    Print to stdout in JSON format.
      --list 

提交回复
热议问题