10

Windows 7 x64 の VS 2010 で Qt 5.0.1 を静的にビルドしました。設定パラメータは

configure -debug-and-release -opensource -confirm-license -platform win32-msvc2010 -nomake examples -nomake tests -no-webkit -static

そして、次のパラメーターを使用してjomでビルドを実行しました。

jom -j 4

ビルド プロセスは成功し、すべてのライブラリを見つけて、アプリを Qt に静的にリンクできます。問題は、アプリケーションを実行しようとするとエラーが発生することです

Module: 5.0.1
File: kernel\qguiapplication.cpp
Line: 781
"Failed to load platform plugin "windows". Available platforms are:"

ただし、このエラーの下では、プラットフォームは表示されません。Qt と動的にリンクしているときに同じエラーが発生しました。依存関係の DLL (qt5core.dll、qt5gui.dll など) を exe の同じディレクトリに配置することで、それを取り除きました。しかし、今回は方法が思いつきません。

Qt の静的ビルドの後、plugins/platforms/ フォルダー内の DLL はなくなり、libs に置き換えられます。また、qwindows.lib と静的にリンクしようとしましたが、役に立ちませんでした。

何か案が?よろしく。

4

5 に答える 5

7

アプリケーションを Windows にデプロイするために必要な DLL を確認するには、依存関係 Walker ( http://www.dependencywalker.com/ ) を使用します。

ドキュメント ページQt for Windows - Deploymentによると、 Windows プラットフォームに Qt アプリケーションをデプロイするには、いくつかの DLL が必要です。

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

アプリケーションのコンパイルに使用するコンパイラによっては、他のライブラリが必要になる場合があります。

  • MSVC 固有のライブラリ:
    • msvcrXX.dll
    • msvcpXX.dll
  • MinGW 固有のライブラリ
    • libgcc_s_dw2-1.DLL
    • libstdc++-6.dll

注: これらすべてのファイルで、XX をシステム上の DLL の現在のバージョンに置き換えます。

Qt を静的にビルドしなかった場合 (デフォルト)、アプリケーションで使用する Qt モジュールによっては Qt5 DLL も必要になります。例:

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

これらの DLL はすべて、Qt インストール ディレクトリの下の「bin」フォルダにあります。

編集

最近、Qt 開発者は windeployqt.exe という名前のツールを作成しました。これは、アプリケーションを展開するために必要なすべてのライブラリを収集するのに役立ちます。

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. <QT_DIR\bin>) to the PATH variable and then run:
  windeployqt <path-to-app-binary>
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 <path-to-app-qml-files> <path-to-app-binary>

Options:
  -?, -h, --help            Displays this help.
  -v, --version             Displays version information.
  --dir <directory>         Use directory instead of binary directory.
  --libdir <path>           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 <directory>      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 <option>           Print only the names of the files copied.
                            Available options:
                             source:   absolute path of the source files
                             target:   absolute path of the target files
                             relative: paths of the target files, relative
                                       to the target directory
                             mapping:  outputs the source and the relative
                                       target, suitable for use within an
                                       Appx mapping file
  --verbose <level>         Verbose level.

Qt libraries can be added by passing their name (-xml) or removed by passing
the name prepended by --no- (--no-xml). Available libraries:
bluetooth clucene concurrent core declarative designercomponents designer gui
clucene qthelp multimedia multimediawidgets multimediaquick network nfc opengl
positioning printsupport qml quick quickparticles script scripttools sensors
serialport sql svg test widgets winextras xml xmlpatterns

Arguments:
  [file]                    Binary or directory containing the binary.
于 2013-05-03T14:20:44.677 に答える
0

libGLESv2.dll を使用している場合は、libEGL.dll も含める必要があります。Visual Studio qwindows.dll エラーからの Qt C++ アプリケーションのデプロイを参照 してください。

于 2013-09-19T20:27:26.617 に答える