Проблема с пространством кучи VS2012 при компиляции программы C ++, которая запускает модель Simulink

0

Я скомпилировал (довольно большую) модель Simulink для DLL файла (с использованием цели ert_shrdlib) и создал простой фрагмент c++ (в Visual Studio 2012 Express), который загружает библиотеку и выполняет шаги по модели. Когда я пытаюсь скомпилировать решение в исполняемый файл, я получаю следующую ошибку компилятора:

error C1060: compiler is out of heap space  c:\matlabr2011b_x86\simulink\include\simstruc.h

Я попытался найти SO так же, как google, о способах борьбы с этим, но я еще не нашел ничего, что сработает. Я попытался установить /Zm к высоким (2000) и низким (256) значениям, я пробовал/кучу с разными значениями, я пытался отключить параллельную компиляцию и использовать платформу решений x64.

Поскольку модель - это то, над чем работала компания в течение длительного времени (и многими людьми), я не думаю, что смогу многое сделать по этому поводу, поэтому я надеюсь, что там будет способ с этим в Visual Studio.


Редактировать:

Да, в моем OP я не правильно настроил 64-битный компилятор, но теперь у меня есть и я все равно получаю ту же ошибку.

Заголовок simstruc.h из Simulink, который содержится в сообщении об ошибке, содержит некоторые действительно большие структуры (~ 400 элементов), и я думаю, что они являются корнем проблемы. Я попытался установить кучу значений ridicuolus (например, 20000000000), но этого все равно недостаточно. Серьезно, хотя, эта рабочая станция имеет 64 ГБ оперативной памяти и должна быть в состоянии скомпилировать этот кровавый заголовок, конечно?!

  • 0
    Используйте 64-битный компилятор из подкаталога vc / bin / amd64. Довольно мутно, как это сделать с помощью Express, я сомневаюсь, что он выставляет настройки или даже имеет компилятор. Если вы работаете в компании, которая не верит в то, чтобы обеспечить своих сотрудников достойными инструментами, вам захочется взглянуть на этот сайт .
Теги:
compiler-errors
heap
visual-studio-2012

2 ответа

1
Лучший ответ

Нашел проблему.

Это не проблема с кучей, это была пара строк кода в включенном заголовке (из Mathworks), который мой компилятор не смог обработать. Как только я их нашел и прокомментировал, он скомпилирован.

0

Возможно, ваш компилятор превысил ограничение адресного пространства для 32-разрядных приложений. Сам компилятор, похоже, не имеет 64-битной версии (без любви от Microsoft). 64-битную версию компилятора можно найти в каталоге vc/bin/amd64. Возможно, вам придется установить PATH соответственно или просто вызвать cl.exe с полным пуском вручную.

Попробуйте также другой компилятор, такой как ICC или GCC или Clang. Возможно, и другая ОС.

  • 0
    Я думаю, что мне удалось настроить Visual Studio 2012 Express на использование 64-битного компилятора, но он все еще не хватает места в куче. Это вещь настроек?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню