プログラマーのメモ書き

伊勢在住のプログラマーが気になることを気ままにメモったブログです

OpenCVライブラリの再構築に関するメモ

バージョン:OpenCV 1.0
コンパイル環境:Visual Studio 2005 + SP1
OS: Windows XP Professional

OpenCVをインストールした後で、ライブラリに変更を加えたりした場合、当然、ライブラリの再コンパイルを行なうこととなると思います。しかし、インストール状態のままではコンパイルに失敗してしまうことがあります(Release・Debugのどちらでも起こりえます)。この状態を回避するための方法を下記にまとめておきます。

(下記内容について、一切保障はできませんので、試される方の自己責任でお願いします)

Releaseモードの場合

  1. OpenCVをインストールをする。
  2. OpenCV\_makeにある、opencv.slnを開く
  3. cvaux\includeにあるcvaux.hの1137行目のコメントで文字化けしているのを修正する(修正しないとコンパイルエラーとなることがある)
  4. Releaseモードを選択して、再構築する

上記手順により、再コンパイルしたライブラリを用いて、OpenCVを利用することができるようになります。

Debugモードの場合

実際に、アプリケーションを作成する場合は、Debugモードで動かしたいことがあります。そこで、OpenCVのライブラリをDebugモードにして、上記の手順により再構築することとします。この場合、ライブラリの作成には成功するのですが、実際にアプリケーションを作成し、Debugモードで動作させようとすると、『MSVCR80.DLLがありません』などの旨のメッセージが表示され、実行できません。

実は、一部のグラフィックス関連のライブラリがReleaseモードのみしか提供されていないため、そのままでは再構築しても、実際にユーザプロジェクトを作成し・実行する際に、エラーなってしまいます。これを回避するには、大きく2つの対応方法があります。ひとつは、問題となるライブラリを無視する方法、もうひとつは、正しくグラフィックスライブラリもDebugモードで再構築することとなります。

ここでは、とりあえず動かしたいという場合のために、前者の簡便な方法を紹介します。このほうほうで、前述のエラーにより実行停止することは回避できますが、本当であれば、こういう回避の仕方は望ましくないと思われます。あくまでも、ご自分の責任において試してください(後者の方法に興味のある方は、下記の注意点の記述と、参考にしたURLの内容を元にチャレンジしてみてください)。

  1. Debugモードを選択する
  2. highguiプロジェクトを開く
  3. リンカ->入力、の『特定のライブラリの無視』に、 libmmdd.lib; libmmd.lib; msvcrt.lib を入力する(セミコロンを忘れないようにしてください)
  4. Debugモードで再構築する

注意点

  • OpenCVのDLLを作成すると、コンパイルオプションのコード作成のデフォルトの設定が、
    Release:マルチスレッド、DLL(/MD)
    Debug:マルチスレッド、DLL(/MDd)
    のようにDLLとしてランタイムライブラリを使うようになっています。このため、ユーザプロジェクトも同じ設定で使うようにしておく必要があります。
  • 本来ならば、highgui.dllの再構築時には、関連するグラフィックライブラリもDebugモードで再構築するのが最も適切です。
    この場合、OpenCV\otherlib\_graphics以下をDebugモードで再コンパイルし、highgui.libに静的リンクするライブラリ名をlibxxxd.libのようにデバッグ版を指定してください。なお、この方法の場合、jasperのソースファイルが一緒に配布されていないため、自分でダウンロードしてくる必要があります。
  • VS2005の場合、各種コンパイル設定が、プロジェクト単位とファイル単位の両方で設定できるので注意が必要です。

(参考にしたURL)

http://chihara.naist.jp/people/2004/kenta-t/OpenCV/pukiwiki/index.php?%A5%A4%A5%F3%A5%B9%A5%C8%A1%BC%A5%EB

http://groups.google.fr/group/OpenCV/browse_thread/thread/ab7d1864233c1ef7/d3c146ff56edfb1c?#d3c146ff56edfb1c

http://zebulon.sourceforge.net/wiki/index.php/Visual_Studio_2005#OpenCV

http://forums.msdn.microsoft.com/en-US/vcgeneral/thread/6d16ecce-f92b-4c53-a45b-40119c4566a6/