读/写访问冲突c++使用libfreenect2



我是一个c++新手,开始摆弄我的Kinect V2和libfreenect2。我想图书馆的建筑对我来说还不错。但是当我尝试在我的代码中使用它时,我得到了一些奇怪的异常。

Freenect2 freenect2;
std::string serial="";
Freenect2Device *dev = 0;
freenect2.enumerateDevices();
serial = freenect2.getDefaultDeviceSerialNumber();
dev = freenect2.openDevice(serial);

每次运行此代码时,它都无法通过以下方式获取序列号[serial = freenect2.getDefaultDeviceSerialNumber();]:

"未处理异常抛出:读访问冲突。

_Pnext = 0xffffffffffffffffff。"

如果我使用

Freenect2 freenect2;
Freenect2Device *dev = 0;
SyncMultiFrameListener listener(Frame::Color);
FrameMap frames;
freenect2.enumerateDevices();
dev = freenect2.openDefaultDevice();
dev->setColorFrameListener(&listener);
dev->start();
listener.waitForNewFrame(frames)
相反,它在等待新帧[listener.waitForNewFrame(frames)]时失败,并抛出以下异常:

"在ConsoleApplication1.exe中的0x000000018026D0C2 (ig75icd64.dll)抛出异常:0xC0000005:访问违反写入位置0x000000002BA0D700。"

那么,我做错了什么,我怎样才能做得更好?

谢谢你的建议。

编辑:

缩短代码…

我在调试模式下面临同样的问题,但它在发布上工作。

经过几个小时的研究,我已经设法通过在libfreenect2项目上的编译标志(在调试设置上)解决了这个问题。

freenect2项目标记为Multi-threaded DLL (/MD)和if你把它改为Multi-threaded Debug DLL (/MDd),它应该工作。

在VS2015中,你可以访问这个属性:

项目属性-> C/c++ ->代码生成->运行库

最新更新