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