はじめに
OpenCVのGUIはQtと一緒にコンパイルすると非常に便利です.
ですが,Qtは,環境に応じて色々なものがダウンロードされるため,数十GBくらい落ちてきます.
不必要なbuild環境を削除しても,手元は12GBもありました.
コンパイル済みのOpenCVのDLLをいろんな場所で使おうとしてコピーするにもQt本体をインストールしなおすことはちょっとあれです.
そこで,OpenCV ジェンガのように,大量にあるQtのDLLを最小構成にしてみます.
なお,OpenCVをwith Qtでコンパイルするためのジェンガではありません.with QtでOpenCVをコンパイルするには本体のかなりを要します.
with Qtで作られたOpenCVのDLLを使って,アプリケーションを実行するためのものです.
本当に必要だったもの
削除しては実行を繰り返して,本当に必要だったものは以下のたった5つのDLLで合計20MBくらいです.
1/1000くらいになりました.
- Qt5Core.dll
- Qt5Gui.dll
- Qt5Test.dll
- Qt5Widgets.dll
- plugins\platforms\qwindows.dll
なおデバッグモード時は,dのついた下記5つが必要です.
- Qt5Cored.dll
- Qt5Guid.dll
- Qt5Testd.dll
- Qt5Widgetsd.dll
- plugins\platforms\qwindowsd.dll
さぁこれを適当なパスの通ったところにコピーして実行しても残念ながら下のように言われて怒られます.
qt.qpa.plugin: Could not find the Qt platform plugin "windows" in ""
This application failed to start because no Qt platform plugin could be initialized. Reinstalling the application may fix this problem.
plugin内のDLLは,パスではなく,どこかから相対指定されている必要がありそうです.
いろいろググった結果環境変数QT_PLUGIN_PATHを定義すればよさそうです.
環境変数として,QT_PLUGIN_PATH
として値を例えばC:\Qt\plugins
とします(場所は任意).
そうしたら,指定した値の場所にqwindows.dll
をplatformsのフォルダ内に置けば動きます.
C:\Qt\plugins\platforms\qwindows.dll
結構難易度高めでした.