« ローラは障害者を嘲笑したのか(動画あり) | トップページ | 「GDAL」の読み方は「グードゥル」または「グーダル」(そして「ジーダル」でも「ジードール」でも可) »

2013年4月23日 (火)

OpenCV 2.4.5のビルドでリンクエラーが出る場合の対処法

私の環境(WindowsXP、VisualStudio2010、OpenCV 2.4.5)ではうまくいった、という一例です。

出ていたリンカのエラーは↓下記です。

error LNK2019: 未解決の外部シンボル _cvReleaseImage が関数 _main で参照されました。
error LNK2019: 未解決の外部シンボル _cvWaitKey が関数 _main で参照されました。
error LNK2019: 未解決の外部シンボル _cvShowImage が関数 _main で参照されました。
error LNK2019: 未解決の外部シンボル _cvMoveWindow が関数 _main で参照されました。
error LNK2019: 未解決の外部シンボル _cvNamedWindow が関数 _main で参照されました。
error LNK2019: 未解決の外部シンボル _cvLoadImage が関数 _main で参照されました。

リンカの設定に、libのディレクトリとlibのファイル名を指定することで、うまくいきました。

OpenCVのリンカエラー対策(プロジェクトのプロパティページ)
ソリューション エクスプローラのプロジェクト名を右クリック
→プロジェクトのプロパティページ

OpenCVのリンカエラー対策(追加のライブラリディレクトリ)
 -構成プロパティ
  -リンカー
   -全般 → 追加のライブラリディレクトリ

上記に
  (あなたの環境のOpenCVの場所)\build\x86\vc10\lib
を指定します。
(パスに含まれている、アーキテクチャとかVisualStudioのバージョンとかの文字列は、お手元の環境に適宜合わせてください)

OpenCVのリンカエラー対策(追加の依存ファイル)
 -構成プロパティ
  -リンカー
   -入力 → 追加の依存ファイル

に、さっき指定した「追加のライブラリディレクトリ」に入っているlibファイルをすべて指定する↓

OpenCVのリンカエラー対策(追加の依存ファイルに指定したlibファイル)

つまり、下記をすべて指定しました。

opencv_calib3d245.lib
opencv_calib3d245d.lib
opencv_contrib245.lib
opencv_contrib245d.lib
opencv_core245.lib
opencv_core245d.lib
opencv_features2d245.lib
opencv_features2d245d.lib
opencv_flann245.lib
opencv_flann245d.lib
opencv_gpu245.lib
opencv_gpu245d.lib
opencv_haartraining_engine.lib
opencv_haartraining_engined.lib
opencv_highgui245.lib
opencv_highgui245d.lib
opencv_imgproc245.lib
opencv_imgproc245d.lib
opencv_legacy245.lib
opencv_legacy245d.lib
opencv_ml245.lib
opencv_ml245d.lib
opencv_nonfree245.lib
opencv_nonfree245d.lib
opencv_objdetect245.lib
opencv_objdetect245d.lib
opencv_photo245.lib
opencv_photo245d.lib
opencv_stitching245.lib
opencv_stitching245d.lib
opencv_superres245.lib
opencv_superres245d.lib
opencv_ts245.lib
opencv_ts245d.lib
opencv_video245.lib
opencv_video245d.lib
opencv_videostab245.lib
opencv_videostab245d.lib

上記を指定後に、ビルドしてみたところうまくいきました。

【補足&経緯】
第2回 OpenCVを使ってみよう:OpenCVで学ぶ画像認識|gihyo.jp … 技術評論社

上記に書いてある内容をベースにいろいろ試していたのですが、

続いて,「構成」を「Debug」に変更し,「リンカ」タブを展開した中の「入力」を選択し,「追加の依存ファイル」で"cxcore.lib cv.lib highgui.lib cvaux.lib"を追加します。

のところからうまくいかなかったんですよね。

というのも、自分がダウンロードしたOpenCVのファイルに
  "cxcore.lib"
  "cv.lib"
  "highgui.lib"
  "cvaux.lib"
などのファイルが含まれていなかったんです。

で、それっぽい感じがした ...\build\x86\vc10\lib\ の中身をリンクしてみたところ、うまくいったという次第。libのファイル名が変更されたんでしょうか(?)。

正直、自分はVisualStudioの開発環境やOpenCVに詳しいわけでもなんでもないので、このやり方が良い方法なのかどうかは、よくわかりません。

でも、上記「第2回 OpenCVを使ってみよう」のサンプルや、下記のサンプルは無事動かすことができました。

opencv.jp - OpenCV: 計算幾何(Computational Geometory)サンプルコード -

とりあえず、めでたしということで。

詳解 OpenCV ―コンピュータビジョンライブラリを使った画像処理・認識
詳解 OpenCV ―コンピュータビジョンライブラリを使った画像処理・認識

|

« ローラは障害者を嘲笑したのか(動画あり) | トップページ | 「GDAL」の読み方は「グードゥル」または「グーダル」(そして「ジーダル」でも「ジードール」でも可) »

パソコン・インターネット」カテゴリの記事

日記・コラム・つぶやき」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/517450/60884151

この記事へのトラックバック一覧です: OpenCV 2.4.5のビルドでリンクエラーが出る場合の対処法:

« ローラは障害者を嘲笑したのか(動画あり) | トップページ | 「GDAL」の読み方は「グードゥル」または「グーダル」(そして「ジーダル」でも「ジードール」でも可) »