identifier "IUnknown" is undefined

2011/06/16
OpenCV2.2.0を先日コンパイルしてGPU機能を使おうとしたのですが、ドキュメントに載っている関数が入っていなかったので、OpenCVのリポジトリから2.2.9をダウンロードしてきてコンパイルしました。しかし、やはりopencv_gpuのコンパイルのところでエラーが出てすんなりとはコンパイルできない状況に陥りましたので、そのときのエラーと解決策を記しておきます。

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++"

{

    template void** 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>
template void** IID_PPV_ARGS_Helper(T** pp) { // make sure everyone derives from IUnknown static_cast(*pp); return reinterpret_cast(pp); } }


同じエラーが出てしまった方は試してみてください。

  このエントリーをはてなブックマークに追加    

<<「ソフトウェア開発」の記事一覧に戻る

関連記事