kinect v2 — нарушение прав чтения / записи 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 был 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)] со следующим сгенерированным исключением:

«Исключение, выданное в 0x000000018026D0C2 (ig75icd64.dll) в ConsoleApplication1.exe: 0xC0000005: расположение записи нарушения прав доступа 0x000000002BA0D700.
«

Итак, что я делаю не так и как я могу сделать это лучше?

Спасибо за совет.

Редактировать: сократил код …

1

Решение

Я столкнулся с той же проблемой в режиме отладки, но она работала в версии.

После нескольких часов исследований мне удалось решить проблему с помощью флаг компиляции в проекте libfreenect2 (при настройке отладки).

Проект freenect2 был отмечен как Multi-threaded DLL (/MD) и если
вы меняете это на Multi-threaded Debug DLL (/MDd) он должен работать.

В VS2015 вы можете получить доступ к этому свойству на:

Свойства проекта -> C / C ++ -> Генерация кода -> Библиотека времени выполнения

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]