由于已达到数组的最大内存分配编译器的堆空间不足,因此无法编译Modelica程序

问题描述

我目前正在尝试在Dymola中编译Modelica程序。我遇到了一个问题,即编译器空间不足(严重错误C1060),数组的总大小不能超过0x7fffffff字节(错误C2148),并警告C4307:'*':有符号整数常量溢出。 >

我尝试将编译器标志设置为/ Zm,以增加编译时的内存分配,以及设置Advanced.CompileWith64 = 2。到目前为止,我在编译程序方面都没有成功,任何建议都将不胜感激。

我访问过的一些网站可能会有所帮助:

https://docs.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/

解决方法

对我来说,有两种可能的解释:

  • 您使用C源代码中包含的一张大表。最好的解决方案是将表放在外部(使用Modelica.Blocks.Tables.CombiTable *或类似方法),并可能进行64位编译(以使其适合地址空间)。
  • 翻译中出现错误,数组不应该那么大,在这种情况下,没有模型就很难说更多。