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 からディスクイメージを入手しよう.