读/写访问冲突c++使用libfreenect2
read/write access violation c++ using 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++ ->代码生成->运行库
相关文章:
- 如何创建一个CMake变量,除非显式重写,否则使用默认值
- C++:TypeDef使用元组
- 使用std::multimap迭代器创建std::list
- 从不同线程使用int64的不同字节安全吗
- 比较并显示使用最小值(a,b)和最大值(a、b)升序排列的4个数字
- 为什么在全局范围内使用"extern int a"似乎不行?
- 在C#中处理C++指针而不使用unsafe的最佳方法
- 使用C++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- 如何使用Google Mock来模拟gettimeofday()
- 如何使用默认参数等选择模板专业化
- 为什么使用 "this" 指针调用派生成员函数?
- 使用新行和不使用新行读取文件
- 如何使用 < 和 > 命令获取 c++ 中的输入和输出?
- 如何确定我已使用非编码文件到达 EOF?
- 如何在cuSparse中使用cusparseXcoo2csr从coo转换为csc
- 使用CMake创建QML插件
- 使用strcpy将char数组的元素复制到另一个数组
- 在c++中使用nlohmann从类到json的转换
- 使用指针从C++中的数组中获取最大值
- 读/写访问冲突c++使用libfreenect2