Не удается скомпилировать программу Modelica, так как достигнуто максимальное выделение памяти для массива (компилятору не хватает места в куче)

#c #compiler-errors #modelica #dymola

#c #ошибки компилятора #modelica #dymola

Вопрос:

В настоящее время я пытаюсь скомпилировать программу Modelica в Dymola. Я столкнулся с проблемами, в которых говорится, что компилятору не хватает места в куче (фатальная ошибка C1060), общий размер массива не должен превышать 0x7fffffff байт (ошибка C2148) и предупреждение C4307: ‘*’: переполнение интегральной константы со знаком.

Я попытался установить флаг компилятора на /Zm, чтобы увеличить выделение памяти при компиляции, а также установить Дополнительно.CompileWith64= 2. До сих пор у меня не было успеха в компиляции моей программы, любые предложения будут оценены.

Вот несколько веб-сайтов, которые я посетил, которые могут помочь:

https://learn.microsoft.com/en-us/cpp/build/reference/zm-specify-precompiled-header-memory-allocation-limit?view=vs-2019

https://www.claytex.com/blog/dymola-compilation-process/?fbclid=IwAR2_GM6Hrj

https://www.claytex.com/blog/stepping-through-dymosim-exe/

Комментарии:

1. total size of array must not exceed 0x7fffffff bytes Какой у вас большой массив?

2. У вас есть пример модели? Может быть проще, если вы используете свой обычный канал поддержки, поскольку они должны иметь возможность обрабатывать конфиденциальные модели.

Ответ №1:

Для меня есть два вероятных объяснения:

  • Вы используете большую таблицу, которая включена в исходные коды C. Лучшее решение — иметь таблицу извне (используя Modelica.Блоки.Таблицы.Совместимый * или аналогично), возможно, с 64-разрядной компиляцией (чтобы она помещалась в адресное пространство).
  • Что-то пошло не так в переводе, и массив не должен быть таким большим, и в этом случае трудно сказать больше без модели.