которого заданы вручную в коде.
В другом есть double LeafValues[128064], значения которого также заданы вручную в коде.
Принципиальной разницы в коде нет. Структура одинаковая, за исключением числовых параметров.
Оба файла включаются при компиляции в dll.
И, я не понимаю почему, но если происходит вызов функции из второго (большого) cpp-файла, то программа крашится.
А если из первого (который меньше), то всё норм.
Повторюсь, разницы в структуре между ними никакой. Кроме того что второй вручную задаёт 128064 значений.
dll компилится в vs2015 несколько минут.
А при тестовой попытке собрать exe с этим файлом уже час жду пока соберётся.
Из-за чего такое может происходить и как это можно исправить?
А как именно они заданы?
static const struct myStruct { double LeafValues[128064] = { 0.01126874214607591, 0, 0.01126874214607591,...............} } Вместо многоточия - много-много double-чисел
Утверждать можно, т.к. вручную пробовал разные версии, и нашёл конкретно что именно при вызове этой функции происходит краш. Если закомментить её вызов - не происходит краша. Если вызвать аналогичную функцию, но из файла с меньшим размером массива - краша не происходит. Отладчик ничего не говорит, т.к. это dll, и присоединяться к исполнимой программе невозможно - ибо она в проде и данные потоком идут.
А это не нарушение ODR у тебя часом?
Нет, там msvc правда ломается на таком массивчике
мне кажется компилятор не собрал бы, если бы 2 объявления одинаковых было?
Возможно присоединяться...
Обсуждают сегодня