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

标签 c++ kinect-v2 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 是 0xFFFFFFFFFFFFFFFF。"

如果我正在使用

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

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

感谢您的建议。

编辑:缩短代码...

最佳答案

我在 Debug 模式下遇到了同样的问题,但它在 Release 模式下有效。

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

The freenect2 project was marked as Multi-threaded DLL (/MD) and if you change it to Multi-threaded Debug DLL (/MDd) it should work.

在 VS2015 中,您可以访问此属性:

Project Properties -> C/C++ -> Code Generation ->Runtime Library

关于c++ - 使用 libfreenect2 的读/写访问冲突 c++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40026396/

相关文章:

python - WSL Ubuntu - 制作 libfreenect - CYTHON_EXECUTABLE-NOTFOUND

c++ - 如果字符串是证书,如何检查 openssl c++,如果是,如果该字符串是根证书

c++ - 继承 : Access both private and public parts of another class

c# - 使用 Azure Kinect DK 将 In32Rect 坐标转换为 Span<BGRA>

python - pykinect2深度帧被截断

python - 使用 pylibfreenect2 中的 getPointXYZ() 时,Kinect V2 深度图像会产生奇怪的点云坐标?

python - 矢量化 Kinect 真实世界坐标处理算法以提高速度

c++ - 将整数转换为字符串 C++

c++ - 什么可能导致无限循环错误

c++ - Kinect 2 - AcquireLatestFrame() 大部分时间都失败