OpenCV2.2.0を先日コンパイルしてGPU機能を使おうとしたのですが、ドキュメントに載っている関数が入っていなかったので、OpenCVのリポジトリから2.2.9をダウンロードしてきてコンパイルしました。しかし、やはりopencv_gpuのコンパイルのところでエラーが出てすんなりとはコンパイルできない状況に陥りましたので、そのときのエラーと解決策を記しておきます。
VC++2010でのエラーメッセージ
NVIDIA Forumsに解決策が載っていました。
http://forums.nvidia.com/index.php?showtopic=67822
ここに載っていたようにエラーが起こったObjBase.hを修正したら私の場合は無事にコンパイルが通りました。
次のようにObjBase.hの240行目付近にwtypes.hとunknwn.hをインクルードする文を追加します。
#include <wtypes.h>
#include <unknwn.h>
修正前
修正後
同じエラーが出てしまった方は試してみてください。
VC++2010でのエラーメッセージ
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Include\objbase.h(240): error: identifier "IUnknown" is undefined
NVIDIA Forumsに解決策が載っていました。
http://forums.nvidia.com/index.php?showtopic=67822
ここに載っていたようにエラーが起こったObjBase.hを修正したら私の場合は無事にコンパイルが通りました。
次のようにObjBase.hの240行目付近にwtypes.hとunknwn.hをインクルードする文を追加します。
#include <wtypes.h>
#include <unknwn.h>
修正前
extern "C++" { templatevoid** IID_PPV_ARGS_Helper(T** pp) { // make sure everyone derives from IUnknown static_cast(*pp); return reinterpret_cast(pp); } }
修正後
extern "C++" { #include <wtypes.h>
#include <unknwn.h>
templatevoid** IID_PPV_ARGS_Helper(T** pp) { // make sure everyone derives from IUnknown static_cast(*pp); return reinterpret_cast(pp); } }
同じエラーが出てしまった方は試してみてください。