OFLibに関して

オプティカルフローのCUDAライブラリを頒布してくれている大学がありまして、少しお世話になってたんですが、自分のプログラムに組み込もうとするとビジュシーのランタイムライブラリのあたりでエラー。シンボルの二重定義でエラーが出る。調べるとランタイムライブラリの重複使用が問題のよう。
ランタイムライブラリの設定は、ビジュシーでプロジェクトのプロパティ>>構成>>C/C++>>コード生成にて、

  • MT : ランタイムライブラリを静的リンク
  • MD : 動的リンク(持ち運ぶときランタイムdllが必要らしい。その代わり本体はダイエットに成功。そうか、俺ももっと動けば

で、デフォルトはMT。しかし拾ってきたOFLib.libというフロー計算ライブラリはMDでコンパイルされていたようで、おそらく無理にランタイムDLLをリンクしようとして、MTライブラリとシンボルが重複しておわた、、、というかんじ。
もう少し調べてみると、

  • MT : MDオプションでも何とか動く
  • MD : MTだと動かない // 重要

そのため、MTには少し我慢してもらうことにしてMDオプションでコンパイルしたところ、それはそれでエラー。不正にランタイムライブラリを利用した、とかなんとか(error:R6034)。おそらくMT側のスト。


で、ビジュシーの専門家にもなれないし、OFLib.libもソース頒布まではないためこれはもはや、、、



自分でフロー計算を書く!!






あ、てか、OFLibと同じアルゴリズムは昔実装したのを思い出した。問題はそれをCUDA化する元気か、、、


・・・数時間で終わるかな


参考
http://oshiro.bpe.es.osaka-u.ac.jp/people/staff/imura/computer/cpp/vc_runtime/disp_content
http://msdn.microsoft.com/ja-jp/library/abx4dbyh(VS.80).aspx