web-dev-qa-db-ja.com

QT5ライブラリでデプロイされたアプリケーションがWindows 7で起動しない

最近、Windows上のQTベースのアプリケーションをQT 4.8からQT 5に移行しており、展開の問題に直面しています。アプリは変更されておらず、新しいQT5フレームワークでのみビルドされていることに注意してください。 VS2010ベースのQT5ライブラリを使用してビルドするために、ある程度努力しました。 Qt Creatorからアプリを正常に実行しました。

QT4で行ったように、必要なQTライブラリのセットをインストーラーに含めました。

テスト段階では、QT5アプリをクリーンマシンにインストールしました。開始されません。アプリケーションが起動しなかっただけでなく、エラーも出力しませんでした。

依存関係チェッカーを介してアプリを実行しました。また、欠落しているライブラリー依存関係はまったくありませんでした。

32
Aki

数日間の検索が進行せず、QTのバグに遭遇しました。

https://bugreports.qt.io/browse/QTBUG-28766

QT5では、予想されるQTライブラリ、msvcr100.dll、およびmsvcp100.dllに加えて、アプリケーションを次のものと一緒に出荷する必要があることがわかります。

platforms/qminimal.dll
platforms/qwindows.dll

同様に。ローカルのQT5ライブラリinstall @にあります:\ Qt5.0.0\5.0.0\msvc2010\plugins\platformsどこでも検索しましたが、ドキュメントでこの情報を見つけることができませんでした。

37
Aki

スタンドアロンの "Hello World" GUIアプリケーション(Qt sdk 5.0.1 mingw、Win7 x64)を実行するために。次のファイルをプログラムディレクトリに追加する必要があります。

  1. platform/qwindows.dll
  2. D3DCompiler_43.dll
  3. icudt49.dll
  4. icuin49.dll
  5. icuuc49.dll
  6. libEGL.dll
  7. libgcc_s_sjlj-1.dll
  8. libGLESv2.dll
  9. libstdc ++-6.dll
  10. libwinpthread-1.dll
  11. Qt5Core.dll
  12. Qt5Gui.dll
  13. Qt5Widgets.dll

qt 5.5 doc で利用可能なWindowsの完全な展開情報

15
Andrew

より良い選択は、使用です: windeployqt.exe 。このツールは、application.exeのすべての依存関係を解決します。

7
Robert

はい、よく見分けられます。私はqt 5.0.2を使用して同じデプロイメントの問題を抱えていました。

同様に、これらの2つのdllがappsフォルダーにあるプラットフォームフォルダーがインストールされ、Vistaおよびwin7での展開が機能するようになりました。

依存関係ウォーカーは、必要なDLLとしてqwindows.dllまたはqminimal.dllに通知しないため、ここでは役立ちません。

Qtインストールのプラットフォームdllは、\ Qt\5.0.2\mingw47_32\plugins\platformsにあります。

3
Rob

win7およびqt5.1.1のメモ帳チュートリアル用

展開手順は次のとおりです。

 *ビルドモードをデバッグではなくリリースに変更、
 *ビルド、
 *どこかに出力フォルダーを作成
 desktop/notepad /
* 
 *出力フォルダーにファイルをコピー
ファイルリスト:
 * from "workspace_home/build-notepad-xxx-Release/release" 
 * notepad.exe 
 * "qt_home/5.1.1/msvc2010/bin" 
から* icudt51.dll 
 * icuin51.dll 
 * icuuc51.dll 
 * libEGL.dll 
 * libGLESv2.dll 
 * Qt5Core.dll 
 * Qt5Gui.dll 
 * Qt5Widgets.dll 
 * 
 * from "qt_home/5.1.1/msvc2010/plugins/platforms" 
 * platforms(出力フォルダーにこのサブフォルダーを作成する必要があります)
 * qwindows.dll 
 * 
 * 
 * 
 * ..exeファイルを実行し、動作することを確認します、
 * 
 * OK
* 
2
Eric Wang

Qtプラットフォームdllは、「qtbase」の「plugins」フォルダーにあります:C:\ Qt\5.0.0\qtbase\plugins\platforms

2
user2030856

QMediaPlayerとQMediaPlaylistのインスタンスを使用しましたが、アプリケーションが起動しなくなり、次のエラーが表示されました。アプリケーションを再インストールすると、この問題が解決する場合があります。

何が起こっているのかを理解しようとして4日を費やした後、プラグイン、特にファイルwmfengine.dllをロードするためのQt5Core.dllにハードコードされたパスがあることがわかりました。このハードコーディングされたパス(:\ Qt\5.5\msvc2010)を持たないようにQt5Coreをコンパイルしてください。

screenshot of WinDiff

Qt5Core.dllのハードコードされたパスがプラグインwmfengine.dllの読み込みに失敗しました

1
Daniel

空のqt.confは、アプリケーションと同じディレクトリにあり、Windows 7でQt5アプリを起動する際に問題が発生しているようです。削除してみてください。

1
Frederic Heem