3

Kinect 開発の初心者。Kinect for Windows の開発環境として MinGW を使用したいと考えています。

Windows SDK 用の Kinect を c:\program files\Microsoft SDKS\kinect\v1.8 にインストールしました。次に、MSDN のこの例に従って、Kinect センサーを初期化するコードを作成しました。

私が使用してコンパイルすると:

g++ -c color.c -I "c:\Program Files\Microsoft SDKs\Kinect\v1.8\inc"

たくさんの警告とエラーが表示されました

  1. 警告

        In file included from NuiApi.h:109:0, from color.c:2:
        c:\Program Files\Microsoft SDKs\Kinect\v1.8\inc/NuiSensor.h:137:8: warning: extra tokens at end of #
        endif directive [enabled by default]
        #endif _Vector4_
                ^
        c:\Program Files\Microsoft SDKs\Kinect\v1.8\inc/NuiSensor.h:160:8: warning: extra tokens at end of #
        endif directive [enabled by default]
        #endif _Matrix4_
                ^
        c:\Program Files\Microsoft SDKs\Kinect\v1.8\inc/NuiSensor.h:209:8: warning: extra tokens at end of #
        endif directive [enabled by default]
        #endif _NUI_SKELETON_POSITION_INDEX_
        ...
        ...
    

    私が調べたところ、Kinect SDK は Visual Studio を対象としており、無視できるため、これらの警告はコンパイラの違いが原因です。

  2. エラー

    NuiApi.h:47:5: error: definition of 'HRESULT NuiInitialize' is marked 'dllimport'
    
    NuiApi.h:47:5: error: '_In_' was not declared in this scope
    
    NuiApi.h:77:14: error: expected constructor, destructor, or type conversion before '(' token
      static_assert(E_NUI_FRAME_NO_DATA == 0x83010001, "Error code has changed.");
                   ^
    
    In file included from NuiApi.h:109:0,
                 from color.c:2:
    c:\Program Files\Microsoft SDKs\Kinect\v1.8\inc/NuiSensor.h:2105:1: error:    '_Check_return_' does not name a type
    _Check_return_ HRESULT NUIAPI NuiGetSensorCount( _In_ int * pCount );
    ^
    ...(tons of _Check_return does not name a type)
    
    
    c:\Program Files\Microsoft SDKs\Kinect\v1.8\inc/NuiImageCamera.h:78:39: error: '_In_'       was not declared in this scope
    c:\Program Files\Microsoft SDKs\Kinect\v1.8\inc/NuiImageCamera.h:78:70: error: '_Out_' was not declared in this scope
    

質問

これらのエラーのほとんど (すべてではないにしても) は、Kinect SDK が VS を対象としているためです。しかし、私はその下で何が起こっているのかをもっと知りたい初心者です. では、g++ を Kinect SDK で動作させるにはどうすればよいでしょうか? どんな助けでも大歓迎です!!

ちなみに関連ページは以下です

4

2 に答える 2

0

やり方がある!sal.hconcurrencysal.hをダウンロードします (Google 検索で見つけてください)。それらをインクルード ディレクトリに置き、sal.h をプログラムに含めます。
上記のコメントで述べたように、フラグ -std==c++11 を追加します。
次に NuiSkeleton.h を開き、412 行目と 534 行目で NULL を nullptr に変更します (すべてのインスタンス)。
その後、エラーなしで実行されます。

于 2016-01-04T07:46:52.123 に答える