vcomp.dll を求めて,そして判明するいくつかの誤解
Microsoft Visual C++ 2008 SP1 再頒布可能パッケージ (x86)を導入すると手に入ると知った.インストールすると,C:\WINDOWS\WinSxS 以下の「なんとかOpenMPかんとか」というフォルダの下に vcomp.dll,vcomp90.dll が入る.他にもイロイロあるが,C:\WINDOWS\WinSxS 以下に入る様だ.
ンでもー,入れたところで状況は変化しなかったノヨネー.opencv/bin に置こうが system32 に置こうが.
omp.hを読むときに _DEBUG を undef する意義が分からないので,これは触らない.
OpenCVが使えなくてイラッと来たからビルドしてやるぜフハハハハー(成功しない) - BiBoLoG
これについては合点がいった.vcompd.dll を利用できないからだ.リンカ設定の追加の依存入力だって,vcompd.lib と記述したところで,vcompd.dll を用意できない以上,意味がないどころか害になる.よって cv,cxcore では,Debug,Release 両構成共に vcomp.lib と記述する.また Debug ビルド時には _DEBUG が omp.h に流れることとなる.これを阻止するためにその,OpenCVをOpenMPモードでコンパイルした - デー の情報がナルホドと合点いくわけだ.手元の OpenCV1.0 のソースで omp.h との記述は cxmisc.h と cvboost.cpp にあった.
#ifdef _OPENMP #include <omp.h> #endif /* _OPENMP */
これを,書き換える.
#ifdef _OPENMP #ifdef _DEBUG #undef _DEBUG #include <omp.h> #define _DEBUG #else #include <omp.h> #endif #endif /* _OPENMP */
今日取得した OpenCV のソースをビルドしたけれど,同じところでつまずいた.現在用意できる環境は VS2005SE Academic か VC++2008EE+WindowsSDK.Visual Studio 2008 Professional Academic Edition は1まん2せんえん.2010版はいつ出るのか.
http://www.microsoft.com/japan/presspass/detail.aspx?newsid=3536
いや大事なことを忘れていた.デーの記録では Windows SDK for Windows Server 2008 and .NET Framework 3.5 を導入してビルドに成功したとあったんだ.やろう.
ってゆーかー,最初から導入するSDKを間違えていたのではないか.Microsoft ダウンロードセンターで手に入る最新の Windows SDK とはデーの記録のとおりなんだ.今はちょっとしたアップデートパッチが出ているようだが.今までhttp://www.microsoft.com/downloads/details.aspx?FamilyID=7614fe22-8a64-4dfb-aa0c-db53035f40a0&DisplayLang=ja をその類の最新版と思いこんでいた.
まだだ,まだ終わっていない.そう,まずは http://www.microsoft.com/downloads/details.aspx?FamilyId=F26B1AA4-741A-433A-9BE5-FA919850BDBF&displaylang=en からディスクイメージを入手しよう.