ошибка сопоставления / установки итераторов при использовании OpenEXR и компиляции в режиме отладки MSVC

У меня есть проблема, которую я не могу понять. Мой проект с использованием библиотеки OpenEXR отлично работает на платформе Linux. Он также должен быть компилируемым в Visual Studio 2015. Поэтому я пытаюсь его портировать. Я успешно скомпилировал и установил релиз OpenEXR 2.2.0 (скачанный с официальный сайт, следующий инструкции на GitHub). К сожалению, я столкнулся с несколькими проблемами с моим кодом. Один из них можно упростить до следующего небольшого фрагмента:

#include <OpenEXR/ImfInputFile.h>
#include <OpenEXR/ImfHeader.h>

int main(int argc, char * argv[]) {

Imf::InputFile exr_file("test.exr");
const Imf::Header & exr_header = exr_file.header();

// e.g. this fails at debug assertion: map/set iterators incompatible
bool test1 = exr_header.begin() != exr_header.end();

// or this gets stuck somehow and consuming CPU, the program doesn't continue
bool test2 = exr_header.begin() != exr_header.begin();

return 0;
}

Когда он скомпилирован в режиме Release, он кажется нормальным (по крайней мере для фрагмента, у моего проекта есть другие проблемы, которые, я подозреваю, связаны) Но в режиме отладки, который мне нужен для отладки моего проекта, происходят странные вещи. Первый тест заканчивается отладочным утверждением:

Debug Assertion Failed!

Program: C:\WINDOWS\SYSTEM32\MSVCP140D.dll
File: c:\program files (x86)\microsoft visual studio 14.0\vc\include\xtree
Line: 326

Expression: map/set iterators incompatible

Второй (когда первый закомментирован) застревает, и программа, кажется, находится в бесконечном цикле. Я не понимаю почему.

Пожалуйста, кто-нибудь может мне помочь? Я использую Visual Studio Community 2015, если это имеет значение.

2

Решение

Задача ещё не решена.

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

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

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