我已将我最初使用MS Visual Studio 2008编写的应用程序转换为在MS Visual C ++ 6.0(see my previous question)上编译。
转换后我的所有代码现在都在Release中编译,没有调试信息。在Debug我遇到一个奇怪的问题......错误C1063。
fatal error C1063:
Error executing cl.exe.
main.obj - 1 error(s), 163 warning(s)
在您看来,解决此问题的最佳做法是什么?
答案 0 :(得分:2)
Visual Studio 6.0
编译器限制:编译器堆栈溢出
- 该程序太复杂而且造成了 编译器堆栈溢出。这个 错误可能是递归的结果 包括。
<强>提示强>
- 通过拆分简化程序 到较小的源文件,和 重新编译。
您是否有意外递归的调试代码?
答案 1 :(得分:2)
我刚刚遇到了那个错误...
g ++会因为它有限制而得到正确的结果,但不像cl ...那样受限制。
我发现这个页面我觉得对这个问题感兴趣。
http://msdn.microsoft.com/en-us/library/bdscwf1c%28v=vs.80%29.aspx
在我的最后,我尝试/ Zm2000为编译器堆栈提供1Gb空间,但这并没有解决问题。唯一的另一种方法是没有/ O2(即使用/ Od编译和链接就好了。)
实际上,在第一次编译时,链接器崩溃并且on 2+尝试,cl吐出该错误。我认为这与预编译头文件有关。
以防万一,因为有人问,我现在使用的是Controlled Variables标题,大约600Kb。只是模板,但死了简单的模板(真的,看看它们!)所以我猜他们使用的是一种优化算法,它可能会检查模板的大多数功能,而不仅仅是那些必要的功能(这是一个非常小的数字)。 )