Visual Studio 2017 + OpenCV (静的リンク) 要CMake
基本的なこと
1.dll は exe と同じフォルダに置いておけば大抵動く。
2.必要な *.h (*.hpp) と *.lib ファイルがあれば大抵ビルドは通る。つまり不足していたらビルドが通らない。
環境変数を変更して開発するのが嫌な場合には exe の書き出されるフォルダに dll を置くかスタティックリンク、つまり、dll の機能に相当するものを exe にくっつけてしまうのが便利です。
※CMake を使います
環境の構築
1.opencv-4.1.1-vc14_vc15 ファイルをダウンロードして実行、好きな場所に解凍します。
2.解凍して出てきた Build フォルダはいらないので削除。
3.CMake を起動する。Where is the source code に先程解凍されたときに出てきた source フォルダを指定、Where to build the binaries には好きなフォルダ(以下、書き出しフォルダと呼ぶ)を指定。
3.Configure を押す。初回は基本設定が出るので構築したい環境を設定して Finish ボタンを押す。
4.CMake の上の欄で赤い行が設定すべき項目。必要なものにチェックしたりパスを設定したりする。最初は真っ赤なはず。項目を設定後もう一度 Configure ボタンを押す。BUILD_SHARED_LIBS を外すとスタティックリンク用の lib ファイルが作られる設定のプロジェクトが作られる。BUILD_opencv_world にはチェックを入れておいたほうがいいかも (16.参照)。
5.メッセージ欄にエラーが出るようならエラーを直す。どうにもならなくなったら書き出しフォルダを削除して 3.からやり直し。
7.赤い行が出なくなるまで Configure を押して赤い行の項目のチェックするかしないかを判断する。メッセージをよく見るように。
8.Generate ボタンを押してプロジェクトを作る。
9.Open Project を押して Visual Studio を立ち上げる。
11.Debug 構成でソリューションエクスプローラーの INSTALL プロジェクトを右クリック → Build。書き出しフォルダを開くとInstall というフォルダができているのでどこかに名前を変えて移動(例. x86debug 等)。
12.PDB ファイルが書き出しフォルダの bin → Debug に入るのでデバッグ情報が必要ならこれもコピーして Install の中にある lib ファイルと同じ場所(15.参照)に移しておく。他にも PDB ファイルは散らばって存在するので *.PDB で検索して必要なものをコピーする。
13.Release 構成で ReBuild をする。ソリューションエクスプローラーから右クリックで ReBuild。x86 x64 Debug Relase と構築したい対象があれば4回やることになる。
14.コピーされた Install フォルダのコピーの中にある inlcude フォルダの中のヘッダファイルは同じものなので1つ残して他は削除。この中にあるヘッダファイルを自分の作るプログラムのソースファイルにインクルードする。
15.Install フォルダの中にある x64 or x86 → vcXX (XX は VS のバージョン) → staticlib の中に lib ファイルがある。これをどこかにコピーしてリンクの対象にする。dll があった場合には パスの通ったフォルダに置くか、自分の作るプログラムの exe が書き出されるのと同じフォルダにコピーを置く。ffmpeg の dll はとっておいたほうがいいかも。
16.ade.lib と ippicvmt.lib だけ Debug と Release のファイル名がなぜか同じなので aded.lib ippicvmtd.lib とリネームしておく。
17.OpenCV のプログラムを作る場合にはプロジェクトの設定で include フォルダのパスはインクルードの追加設定で lib ファイルのあるフォルダはリンクの追加設定でそれぞれ指定する。VC++ の項目でも C++ の項目でもどちらでも構わない。ビルド構成に応じて lib ファイル名が変わるので、#pragma comment 等のプリプロセッサ宣言でリンクする lib ファイルを切り替えるようにする。全ての lib をリンクすること。
18.プロジェクトのプロパティ、Linker(リンカー) → Input(入力) → Additional Dependencies(追加の依存設定) に Opencv_world411.lib を設定する。Opencv_world411.lib がない場合は多分たくさんの lib ファイルを追加すればうまくいく?(未確認)
以上です。
Copyright ©2010-2024 DOWNSPADE software All Rights Reserved.