更新:使用windeployqt.exe
!それは本当にうまくいきます。
http://doc.qt.io/qt-5/windows-deployment.html#the-windows-deployment-tool
windeployqt を使用する最も簡単な方法は、Qt インストールの bin ディレクトリ (例: ) を PATH 変数に追加してから実行することです。
windeployqt <path-to-app-binary>
更新: さらにテストすると、windeployqt
すべての MingW dll がコピーされませんでした。(MingW 4.9.1 を搭載した Windows 10 上の Qt 5.4 でテスト済み)。したがって、展開する前に最後の 3 つの dll を手動で取得する必要があります。
libgcc_s_dw2-1.dll
libstdc++-6.dll
libwinpthread-1.dll
から
C:\Qt\5.4\mingw491_32\bin
リストにいくつかの追加機能があると思います...以下のリンクのドキュメントを再確認します...
これに関する決定的なドキュメントは次のとおりです。
http://doc.qt.io/qt-5/windows-deployment.html
http://doc.qt.io/qt-5/windows-deployment.html#application-dependencies
Qt DLL のサイズ
驚くべき Qt ライブラリは多くのことを実行できますが、サイズが大きいです。Qt の古いバージョンのいくつかは、少し小さいかもしれません。
Qt 4.8 の場合、msvcQtCore4.dll
は 2.5 MB で、QtGui4.dll
8.4 MB です。
Windows が共有ライブラリ/ダイナミック リンク ライブラリ (DLL) を解決する方法
Windows が実行時にライブラリを追跡する方法は次のとおりです。
http://msdn.microsoft.com/en-us/library/windows/desktop/ms682586(v=vs.85).aspx
単一の小さな EXE
静的にリンクする場合、EXE は必要なライブラリを取得し、スタンドアロンの exe に組み込まれます。まだ msvc 再配布可能ファイルに依存している可能性があります。詳細については、次のセクションを参照してください。ただし、.lib
参照する s を EXE にコンパイルするようになり、exe は他の動的にリンクされたライブラリを指しなくなりました。静的にリンクされた exe 環境のセットアップを取得するには、さらに時間がかかります。
以前に参照したライブラリのバイナリ情報が含まれるようになったため、exe は確実に大きくなります。
https://www.google.com/search?q=qt+static+linking
編集: exe を静的にビルドするということは、LGPL バージョンを使用していないことを意味します。
LGPL を使用している場合は、オブジェクト ファイルをエンド ユーザーが簡単にアクセスできるようにする必要があります。
@peppeはそれをよく説明していると思います(以下のコメントを参照):
技術的には、アプリケーションが LGPL を使用していない場合でも、LGPL で Qt を使用する場合は静的にリンクできます。唯一のトリッキーな要件は、サード パーティがアプリケーションを別の Qt バージョンに再リンクできるようにすることです。しかし、アプリケーションの巨大なオブジェクト ファイル (.o) を提供することで、簡単にそれに準拠できます。これは、任意の Qt バージョンにリンクするだけで済みます。
http://blog.qt.io/blog/2009/11/30/qt-making-the-right-licensing-decision/
一番下のチャートを見てください。商用版を実行している場合は、オブジェクト ファイルを気にせずに静的にリンクできます。
MSVC 再頒布可能パッケージ
再配布可能な依存関係は、ランタイム ライブラリ リンカー オプションと関係があります。
http://msdn.microsoft.com/en-us/library/aa278396(v=vs.60).aspx
/MD, /ML, /MT, /LD
(ランタイム ライブラリを使用)
これらのオプションを開発環境で見つけるには、[プロジェクト] メニューの [設定] をクリックします。次に、[C/C++] タブをクリックし、[カテゴリ] ボックスの [コード生成] をクリックします。[ランタイム ライブラリを使用] ドロップダウン ボックスを参照してください。
以下の 2 つのリンクでは、古いバージョンの Visual Studio について説明していますが、その理由は依然として有効です。
http://www.davidlenihan.com/2008/01/choosing_the_correct_cc_runtim.html
Visual Studio Express 2005 で完全に静的にリンクされた .exe を作成するにはどうすればよいですか?
それが役立つことを願っています。