【发布时间】:2013-12-13 07:39:04
【问题描述】:
我已经将一个(相当大的)Simulink 模型编译为一个 dll 文件(使用 ert_shrdlib 目标)并创建了一个简单的 c++ sn-p(在 Visual Studio 2012 Express 中)加载库并逐步执行模型。当我尝试将解决方案编译为可执行文件时,出现以下编译器错误:
error C1060: compiler is out of heap space c:\matlabr2011b_x86\simulink\include\simstruc.h
我已尝试搜索 SO 以及 google 以寻找解决此问题的方法,但尚未找到任何可行的方法。我尝试将 /Zm 设置为高 (2000) 和低 (256) 值,我尝试使用不同值的 /Heap,我尝试关闭并行编译,并使用 x64 解决方案平台。
由于该模型是公司长期研究的东西(很多人),我认为我目前无法对此做太多事情,所以我希望有一个在 Visual Studio 中处理此问题的方法。
编辑:
是的,在我的 OP 中,我没有正确设置 64 位编译器,但现在我设置了,但仍然出现同样的错误。
错误消息中引用的 Simulink 的 simstruc.h 标头包含一些非常大的结构(约 400 个元素),我猜它们是问题的根源。我试图将堆设置为可笑的值(如 20000000000),但这仍然不够。不过说真的,这台工作站有 64GB 内存,应该可以编译这个该死的头文件吧?!
【问题讨论】:
-
使用 vc/bin/amd64 子目录中的 64 位编译器。如何使用 Express 完成这项工作非常模糊,我怀疑它是否公开了设置,甚至有编译器。如果您在一家不相信为员工提供像样工具的公司工作,那么您需要看看this site。
标签: c++ matlab visual-studio-2012 compiler-errors heap-memory