2016-10-13 2 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였습니다. " 0x000000018026D0C2 던져

" 예외 : 새 프레임 예외가 발생 다음에 [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) 

을 사용하고

, 그것은 실패 (ig75icd64.dll) ConsoleApplication1.exe : 0xC0000005 : 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++ -> 코드 생성 -> 런타임 라이브러리