2016-10-13 18 views
1

私はC++の新人です。私のKinect V2とlibfreenect2を使いこなし始めました。 図書館の建物は私のためにうまくいきました。しかし、私は自分のコードでそれを使用しようとすると、私はいくつかの奇妙な例外が発生します。読み取り/書き込みアクセス違反libfreenect2を使用しているC++

Freenect2 freenect2; 
std::string serial=""; 
Freenect2Device *dev = 0; 

freenect2.enumerateDevices(); 
serial = freenect2.getDefaultDeviceSerialNumber(); 
dev = freenect2.openDevice(serial); 

私はこのコードを実行する毎回が、それはシリアル番号の取得に失敗する[シリアル= freenect2.getDefaultDeviceSerialNumberを();]で:

「未処理の例外がスローさ:アクセス違反を読ん

_Pnext。 0xFFFFFFFFFFFFFFFFでした。

私がスローされた以下の例外を除いて、新しいフレーム[listener.waitForNewFrame(フレーム)]を待っている間に代わり、それが失敗した

Freenect2 freenect2; 
Freenect2Device *dev = 0; 
SyncMultiFrameListener listener(Frame::Color); 
FrameMap frames; 

freenect2.enumerateDevices(); 
dev = freenect2.openDefaultDevice(); 
dev->setColorFrameListener(&listener); 
dev->start(); 

listener.waitForNewFrame(frames) 

を使用している場合は

「0x000000018026D0C2で投げ 例外0x000000002BA0D700。

したがって、私は間違って何をしていますか、どうすればよいでしょうか?

ご協力いただきありがとうございます。

編集:コードを短縮...

+1

、このような問題を解決するための適切なツールはあなたですデバッガ。スタックオーバーフローを尋ねる前に、コードを一行ずつ進める必要があります。詳しいヘルプは、[小さなプログラムをデバッグする方法(Eric Lippert)](https://ericlippert.com/2014/03/05/how-to-debug-small-programs/)を参照してください。最低限、問題を再現する[最小、完全、および検証可能](http://stackoverflow.com/help/mcve)の例と、その問題を再現するためのデバッガ。 –

+0

'0xC0000005'未初期化ポインタに関するヒントが逆参照されました。 –

+0

私はプログラミングに慣れていません。私はデバッガの使い方を知っています。そして、ええ、何かがポインタでつまんでいると思います。しかし、私のコードでは起こりません。インクルードされたファイルで発生します。だからこそ私はここでこの質問をしています... – user3014569

答えて

0

私は、デバッグモードで同じ問題に直面していたが、それはリリースに取り組みました。

私は数時間の研究の末、libfreenect2プロジェクトのコンパイルフラグ(デバッグ設定時)でこの問題を解決しました。

freenect2プロジェクトはMulti-threaded DLL (/MD)としてマークされたと 場合は、それが動作するはずMulti-threaded Debug DLL (/MDd)に変更します。あなたが上でこのプロパティにアクセスすることができますVS2015で

プロジェクトのプロパティ - > C/C++ - >コード生成 - >ランタイムライブラリ

関連する問題