1. fukushima1981

    Posted

    fukushima1981
Changes in title
+OpenCV with QtのDLLジェンガ
Changes in tags
Changes in body
Source | HTML | Preview
@@ -0,0 +1,39 @@
+# はじめに
+OpenCVのGUIはQtと一緒にコンパイルすると非常に便利です.
+ですが,Qtは,環境に応じて色々なものがダウンロードされるため,数十GBくらい落ちてきます.
+不必要なbuild環境を削除しても,手元は12GBもありました.
+
+コンパイル済みのOpenCVのDLLをいろんな場所で使おうとしてコピーするにもQt本体をインストールしなおすことはちょっとあれです.
+
+そこで,[OpenCV ジェンガ](https://qiita.com/tomoaki_teshima/items/2a85bc4de7a68e5b8268)のように,大量にある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
+
+さぁこれを適当なパスの通ったところにコピーして実行しても残念ながら下のように言われて怒られます.
+
+```
+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`
+
+結構難易度高めでした.
+