Windowsでqtプログラムを作成しました。そして友達とシェアしたい。しかし、私の友人は純粋なWindows 7を使用しています。
必要な dll だけを含めることができればいいのですが。使用されていないdllの一部を削除できれば、もっといいでしょう。(dllのサイズを縮小するため)
これどうやってするの?ありがとう
何らかの方法で実際の DLL のサイズを小さくしようとすると、コードを削除することになります。これは非常に悪い考えです。次のいずれかの場合は、Qt ソースを変更できます。
...そうは言っても、これはあなたの特定のケースでは進むべき道ではありません。
必要な DLL の数を減らそうとするのは、まったく別の話です。通常、アプリケーションは、必要なモジュールの DLL のみを必要とします。ただし、一部のモジュールは他のモジュールに依存しているため、自分では使用していないが内部のどこかで使用されているものの DLL を取得することになる場合があります。たとえば、QWidget
ベース プロジェクトの Direct3D DLL に依存することになる可能性があります。これは、Qt のストック ビルドの多くが、OpenGL (ES) 2 の DirectX ベースのエミュレーション レイヤーである ANGLE を使用するようにビルドされているためです。デスクトップ OpenGL 用の Qt ビルドを使用していくつかの DLL を削除できますが、これらは Qt DLL に比べてかなり小さいものです。Qt から Webkit を省略することは、数 MB の DLL 依存関係を削除する良い方法です。
最後のオプションは peppe によって既に言及されています - 静的リンクでは、Qt 自体の静的ビルドを作成する必要があります。また、いくつかの制限があります。クローズド ソース/商用アプリケーションを配布する場合は、その特定のプラットフォームの商用 Qt ライセンスが必要です。オープンソースのものとテスト目的では、それで問題ないと思います。静的ビルドは、パフォーマンスが向上し、基本的な GUI アプリケーション (QtCore/QtGUI および QtWidgets) の約 8 ~ 9 MB の単一ファイルになるため、非常に優れています。前回確認したとき、QtQuick/QML アプリケーションは静的ビルドでは機能しませんでした。
最も簡単な方法は、リンク時の最適化を有効にして、Qt の静的なリリース ビルドを使用することです。これにはMSVCが必要で(MinGWのGCCで動作するかどうかはわかりません)、Qtを次のように構成します
configure -static -release -ltcg
もちろん、Qt の (L)GPL バージョンを使用する場合、静的リンクが意味することにも注意してください。
一般に、機能スイッチを使用して Qt の一部を切り取ることができます。Unix の構成スクリプトは、ファイルにリストされている機能の 1 つである-no-feature-featurename
whereを渡すことで、これを直接サポートします。featurename
src/corelib/global/qfeatures.txt
おそらく、Windows の構成実行可能ファイルを使用する方法があります (最終的にはQT_NO_FEATURE
、生成されたファイルに対応するマクロを追加しsrc/corelib/global/qconfig.h
ます...)。
機能スイッチは公式にはサポートされていない (「ベスト エフォート」サポート) ため、Qt の一部を無効にするとビルドが壊れる可能性があることに注意してください。YMMV。