- 2022.03.28 Monday
- スポンサーサイト
-
一定期間更新がないため広告を表示しています
- | スポンサードリンク | - | | - | - | pookmark |
- 2015.08.28 Friday
- Visual Studio 2015 プロジェクトに外部のDLLファイル含める 00100
-
にせねこメモ
2015-07-06
Visual Studio 2013 でプロジェクトのディレクトリ内にライブラリをインストールする
http://nixeneko.hatenablog.com/entry/2015/07/06/001828
より
Visual Stdio 2015 版を書いてみようと思う。
Visual Studio で外部ライブラリを使った場合、普通はライブラリをインストールしたシステム上でしか動かせない。
A、B、C、の、どれかでうごかせる。
A.パターンはシステム環境変数 path にDLL のパスを指定する方法再起動が必要。
B.パターンはライブラリは別でインストールさせて、sampleプロジェクトをフォルダごと複製し .sln などの VisualStudio プロジェクト設定ファイルをテキストエディタで開いて検索置換してパス(フォルダ名だけでいい場合が多い)を直し、program自体は 配布されたものを使うといける。
※
C.パターンはライブラリをプロジェクトと同じフォルダに突っ込むことで、同じバージョンの Visual Studio をインストールした他のPCに持っていってもそのままコンパイルができるようにすることができる。
講習会とかで学生無料のVisual Studioインストールしたけどライブラリを各人で環境変数と再起動やインストールさせるのは面倒だからこのプロジェクトそのまま使って、みたいな感じには役立つかもしれない。
手順
ここではOpenCVの場合を考える。そうでない場合でも大して変わらないはず。
ライブラリは
.h ヘッダファイル……コンパイル時に必要
.libファイル……コンパイル時に必要
.dllファイル……実行時に必要
からなっている。そのため、それらが参照できる状態になっている必要がある。
そこで、これらのファイルを含んだライブラリをプロジェクトの入っているディレクトリに突っ込んで、
ディレクトリの相対パスで指定するようにすれば、システムや環境変数をよごさずにインストールせずとも
OpenCVを使ったプログラムがコンパイル・実行できるようになる。
プロジェクト作成
まず、新しいプロジェクトを作成する。
「ファイル」→「新規作成」→「プロジェクト」から新しいプロジェクトのウィンドウを開く。
ここでは「Visual C++」の「Win32 コンソールアプリケーション」を選択、プロジェクトの名前とかは適当に入力しOKをクリック。
今回は
ConsoleAppLibraryinsideDLL00100
C:¥Maya¥scripts¥FBX_SDK¥FBX_SDK_VS_Cpp00700¥
にした。
Win32 アプリケーションウィザードが開くので適当に設定する。というか「完了」押す。
作成したプロジェクトのフォルダにライブラリを入れる
以下フォルダの名前や構造については設定で整合性がついていればいいので適当に。
ここでは
C:¥Maya¥scripts¥FBX_SDK¥FBX_SDK_VS_Cpp00700¥
が作成したプロジェクトの入っているディレクトリである。 入ってるものは
.vs/
ConsoleAppLibraryinsideDLL00100/
ConsoleAppLibraryinsideDLL00100.sln
ConsoleAppLibraryinsideDLL00100.VC.db
ConsoleAppLibraryinsideDLL00100.VC.VC.opendb
ここに “Library” フォルダを作成する。
Library フォルダ内に opencv フォルダを作成する。
http://opencv.jp/ jp は 2.2 おしで
https://sourceforge.net/projects/opencvlibrary/files/opencv-win/2.2/ OpenCV-2.2.0-win32-vs2010.exe
Open Source Computer Vision Library 本家は
http://opencv.org/ 公式は 最新は opencv-3.2.0-vc14.exe みたい。
今は
作成した opencv フォルダ内に、展開したOpenCVライブラリの build フォルダの中身を突っ込む。
Visual Studioの構成プロパティでコンパイル時に必要なものを設定する
ここではライブラリにパスを通すことで使えるようにする。
ここで、パスを設定する際に、
$(SolutionDir)Library¥opencv¥include
$(SolutionDir)Library¥opencv¥x86¥vc12¥lib
などのようにマクロ $(〜) を使うことで相対的にディレクトリを指定できる。
$(SolutionDir) はソリューションファイルがあるディレクトリを示す
(ここでは"C:¥Maya¥scripts¥FBX_SDK¥FBX_SDK_VS_Cpp00700¥ConsoleAppLibraryinsideDLL00100¥")。
ディレクトリの表現は¥で終わる形になっているので余計な¥を入れないように。
マクロの一覧はパス設定を行うウィンドウの「マクロ」ボタンをクリックすると一覧が確認できる。
他には $(ProjectDir) なども使えるかもしれない(プロジェクトファイルのあるディレクトリを示す)。
ソリューションエクスプローラから
プロジェクト名を右クリックしプロパティを開く(あるいは、メニューからプロジェクト>〜のプロパティ)。
構成プロパティ下のVC++ディレクトリタブを開く。
インクルードディレクトリにヘッダファイルのディレクトリを追加する。
「追加のインクルードディレクトリ」の項目をクリックすると右端に出てくる逆三角のボタンをクリック、
「<編集...>」をクリック。
C:¥Maya¥scripts¥FBX_SDK¥FBX_SDK_VS_Cpp00700¥ConsoleAppLibraryinsideDLL00100¥Library¥opencv¥include
になるように
$(SolutionDir)Library¥opencv¥include
を追加する。
次に、ライブラリディレクトリに.libファイルのディレクトリを同様に追加する。
ここで、ライブラリディレクトリについて、
32ビットアプリケーション用であれば x86,
64ビットアプリケーション用であれば x64
のフォルダを選ぶ。
さらにその中で、
vc10 が Visual Studio 2010 用,
vc11 が Visual Studio 2012 用,
vc12 が Visual Studio 2013 用
vc14 が Visual Studio 2015 用
$(SolutionDir)Library¥opencv¥x64¥vc14¥lib
なので自分の環境にあった物を選ぶ。
そのフォルダの下にあるのが
ここでは、Visual Studio 2015で64ビットアプリケーションを作成しているので、
ディレクトリは x86¥vc12¥lib であり、次を追加することになる。
$(SolutionDir)Library¥opencv¥x86¥vc12¥lib$(SolutionDir)Library¥opencv¥x64¥vc14¥lib
C:¥Maya¥scripts¥FBX_SDK¥FBX_SDK_VS_Cpp00700¥ConsoleAppLibraryinsideDLL00100¥Library¥opencv¥x64¥vc14¥lib
左ペインで リンカー>入力 タブを開く。
「追加の依存ファイル」に、使いたい .lib ファイルを追加する。ここでは、
opencv_video2410d.lib;opencv_ml2410d.lib;opencv_legacy2410d.lib;opencv_core2410d.lib;opencv_highgui2410d.lib;opencv_imgproc2410d.lib;opencv_features2d2410d.libC:¥Maya¥scripts¥FBX_SDK¥FBX_SDK_VS_Cpp00700¥
ConsoleAppLibraryinsideDLL00100¥Library¥opencv¥x64¥vc14¥lib
に入ってたのは
opencv_world320.lib
opencv_world320d.lib
を追加した。
実行時必要となるDLLファイルを適切な場所に
DLLファイルは実行ファイルと同じディレクトリ、
すなわちソリューションディレクトリの下の Debug に突っ込んだらなんとかなった。
ここでは、展開した OpenCV の実行ファイルのディレクトリ build¥x86¥vc12¥bin (.libファイルのディレクトリと同様に環境によって適当なものを選ぶ) の中のファイルを全て
C:¥Maya¥scripts¥FBX_SDK¥FBX_SDK_VS_Cpp00700¥
ConsoleAppLibraryinsideDLL00100¥Library¥opencv¥x64¥vc14¥bin
の
opencv_ffmpeg320_64.dll
opencv_world320.dll
opencv_world320d.dll
を
C:¥Maya¥scripts¥FBX_SDK¥FBX_SDK_VS_Cpp00700¥
ConsoleAppLibraryinsideDLL00100¥Library¥opencv¥bin
C:¥Maya¥scripts¥FBX_SDK¥FBX_SDK_VS_Cpp00700¥
ConsoleAppLibraryinsideDLL00100¥Debug
C:¥Maya¥scripts¥FBX_SDK¥FBX_SDK_VS_Cpp00700¥
ConsoleAppLibraryinsideDLL00100¥x64¥Debug
に
opencv_ffmpeg320_64.dll
opencv_world320.dll
opencv_world320d.dll
の中にコピーした。
これはもっとうまい指定方法があるかもしれない。
サンプルの実行
以上で使えるようになっているはずなので、サンプルコードを実行してみる。
解凍した フォルダの
C:¥Users¥whaison¥Downloads¥opencv¥sources¥samples¥cpp
4 描画処理 — OpenCV2 プログラミングブック リファレンス編
https://book.mynavi.jp/support/pc/opencv2/c3/opencv_drawing.html
//4.1 線分を描く///////////////////////////////////OK
//4.2 矩形を描く///////////////////////////////////////////
//4.3 円を描く/////////////////////////////////////////////////
//4.5 折れ線を描く//////////////////////////////////////////////
//4.6 ポリゴンを描く//////////////////////////////////////////
//4.7 テキストを描く/////////////////////////////////////////////////////
動いた。
ソース
-----------------------------------------------------------------------
-----------------------------------------------------------------------
配布できるDLL付きデータ (142MB)
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
参考URL
https://www.google.co.jp/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=visual+studio2015+%E3%83%97%E3%83%AD%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E3%81%AB%E5%A4%96%E9%83%A8%E3%81%AEDLL%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E5%90%AB%E3%82%81%E3%82%8B
にせねこメモ
2015-07-06
Visual Studio 2013 でプロジェクトのディレクトリ内にライブラリをインストールする
http://nixeneko.hatenablog.com/entry/2015/07/06/001828
より
- | whaison | DLL | 11:33 | comments(0) | - | pookmark |