Я использую расширенную сериализацию с файлами XML с помощью программы на C ++.
Когда я тестирую свою программу в режиме отладки, она работает нормально.
Затем я пытаюсь с тем же файлом в режиме выпуска, но моя программа не работает при загрузке файлов. Я даже пытался сгенерировать xml-файлы с моей программой в режиме релиза, загрузить их обратно, и он тоже вылетает.
Стек вызовов показывает это:
packs_ui_main.exe!boost::archive::basic_xml_grammar<char>::parse_start_tag(std::basic_istream<char,std::char_traits<char> > & is={...}) Line 219 C++
Фактическая ошибка еще дальше, но у меня нет отладочной информации глубже в стеке вызовов.
Я не понимаю, какие настройки могут отличаться между выпуском и отладкой, чтобы объяснить этот сбой.
РЕДАКТИРОВАТЬ 1
Вот определения препроцессора, которые я использую в отладке:
WIN32;_CONSOLE;_DEBUG;__WXMSW__;__WXDEBUG__;_WINDOWS;NOPCH;_USE_32BIT_TIME_T;_CRT_SECURE_NO_WARNINGS
Вот определения препроцессора, которые я использую в релизе:
WIN32;NDEBUG;_WINDOWS;_CONSOLE;__WXMSW__;NOPCH;_USE_32BIT_TIME_T;_CRT_SECURE_NO_WARNINGS
Некоторые из них взяты из wxWidgets
РЕДАКТИРОВАТЬ 2
Я заметил, что при сохранении строки в файле XML они по-разному отображаются между моей версией и конфигурацией отладки. Похоже, что версия выпуска использует другую кодировку.
Например, "title" отображается как "X ~ T"
Другие символы, такие как пробелы, полностью меняют порядок строк и вставляют специальные символы, которые я не могу скопировать-вставить (вероятно, \ 0)
Я убедился, что обе мои конфигурации используют многобайтовый набор символов.