Visual C ++ 6.0 - Фатальная ошибка C1063
-
08-10-2019 - |
Вопрос
Я преобразовал свое приложение, изначально написанное в MS Visual Studio 2008, который будет скомпилирован на MS Visual C ++ 6.0 (увидеть мой предыдущий вопрос).
После преобразования всего моего кода сейчас компилируется в выпуске, без отладки информации. В отладке я столкнулся с странной проблемой ... ошибка C1063.
fatal error C1063:
Error executing cl.exe.
main.obj - 1 error(s), 163 warning(s)
По вашему мнению, какая лучшая практика преодолеть эту проблему?
Решение
Visual Studio 6.0.
Ограничение компилятора: переполнение стека компилятора
- Программа была слишком сложной и вызвала переполнение стека компилятора. Эта ошибка может быть результатом рекурсивных включений.
Советы
- Упростите программу, расщепляя ее в более мелкие исходные файлы и перекомпилируйте.
У вас есть код отладки, который случайно рекурсивен?
Другие советы
Я только что побежал в этой ошибке ...
G ++ получит это правильно, так как у него есть ограничения, но не так, как CL ...
Я нашел эту страницу, которую я думаю, представляет интерес к этому вопросу.
http://msdn.microsoft.com/en-us/library/bdscwf1c%28v=vs.80%29.aspx.
На мой конец я попробовал / ZM2000 дать 1 ГБ пространства к Степ компилятора, но это не решило проблему. Единственным другим способом было не иметь / O2 (то есть с / od, скомпилированным и связанным, просто штрафом.)
На самом деле, на первом компиляции, аварии линкера, а на 2+ пытается, CL выписывает эту ошибку. Я думаю, что это связано с сложными заголовками.
На всякий случай, так как некоторые люди спросили, я использую задержку с контролируемыми переменными, который находится около 600 КБ на данный момент. Просто шаблоны, но мертвые легкие шаблоны (действительно, посмотрите на них!), Поэтому я предполагаю, что они используют алгоритм оптимизации, который, вероятно, проверяет большинство, если не все функции шаблонов вместо того, чтобы просто и только те необходимые (которые являются очень небольшим числом. Несомненно