fc2ブログ

C++でOpenCVのフォームアプリを作る(3) - 静的リンク -

 前回から苦戦していた、開発環境 OpenCV 3.1とVisual Studio 2015での「静的リンク」のその後の進捗です。結果から言うと、うまく行きました。私自身の理解が足りない所もありました。以下、その備忘録です。

 OpenCV 3.1では静的リンク用のライブラリが、OpenCV 3.0まで保存されていたstaticlibフォルダにありません。よって、CMakeでビルド用OpenCV.slnを作成する際にオプション設定(BUILD_SHARED_LIBSのチェックをOFF)して作成する必要があります。CmakeSetting160625.png このチェック項目を素通りすると、Defaultがチェックありなので、DLLファイル(動的リンクの環境)が作成されます。一連の作成手順は、このサイトを参考にしました。

 作成されたStatic Link用のlibファイル(Release版)と、DLLファイルを利用するときのlibファイル(Release版)の容量は下表の通りです。ライブラリファイル名は同じですが、ファイル容量が異なります。当然、staticlink用のlibファイルの方が容量大です。imageprocはstaticlibにするだけで、62倍(6,200%)にもなるのですね。LIBfile160625.png
 Static Link用のlibファイルも無事に作成できましたので、動的リンク(DLLファイル利用)で問題なく動作していたプログラム(C++のフォームアプリ)を、静的リンクでビルドしてみました。・・しかし、リンクエラーのオンパレードでした。何が原因か切り分けるため、まずは、
  ① フォームなしのOpenCVのコード(C++)のみで確認する。次に
  ② フォームを付けて確認する
の2段階で攻めていくことにしました。

 ①は特定の画像のファイルをimreadで読み込んで、Windowに表示させる単純なものでしたが、OpenCV 3.1ではうまくいかなかったので、実績のあったOpenCV 2.4.10(Visual Studio 2010)で検証しました。

//-------------------------------------------------------
// OpenCV 2.4.10 静的リンク
// リンカー設定:入力
// 特定の既定のライブラリを無視:Libcmt.lib;msvcprt.lib
//-------------------------------------------------------

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>

#pragma comment(lib, "comctl32.lib")
#pragma comment(lib, "vfw32.lib")

#pragma comment(lib, "opencv_core2410.lib")
#pragma comment(lib, "opencv_highgui2410.lib")
#pragma comment(lib, "opencv_imgproc2410.lib")

#pragma comment(lib, "zlib.lib")
#pragma comment(lib, "IlmImf.lib")
#pragma comment(lib, "libjasper.lib")
#pragma comment(lib, "libjpeg.lib")
#pragma comment(lib, "libpng.lib")
#pragma comment(lib, "libtiff.lib")

using namespace cv;

void main(void)
{
Mat readimage = imread("c:¥¥flower.bmp");
namedWindow("Read Image", CV_WINDOW_AUTOSIZE | CV_WINDOW_FREERATIO);
imshow("Read Image", readimage);
waitKey(0);
}
 このプログラムをOpenCVのインストールされていないWindows Tabletで実行すると、無事に動作しました。OpenCV 3.1(Visual Studio 2015)でリンクを成功させるためには、OpenCV自身のバージョンアップによる変更点等を考慮する必要がありました。このことについては、次回お話しします。
スポンサーサイト



コメント

非公開コメント

ご訪問者数

(Since 24 July, 2016)

タグクラウド


プロフィール

Dr.BobT

Author: Dr.BobT
興味のおもむくままに生涯考え続けるエンジニアでありたい。

月別アーカイブ

メールフォーム

名前:
メール:
件名:
本文: