LoginSignup
8
5

More than 1 year has passed since last update.

OpenCV with QtのDLLジェンガ

Last updated at Posted at 2021-12-30

はじめに

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

結構難易度高めでした.

8
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
5