在VC ++ VS6中,一个简单的printf会产生致命错误C1001:INTERNAL COMPILER ERROR

时间:2016-07-22 08:30:56

标签: visual-c++ visual-studio-6 c1001

我在Windows 7上使用visual studio 6,vc ++并编写了一个简单的helloworld程序,默认情况下由VS6创建。 但是由于printf,它给出了以下错误:

    // testapp.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"

int main(int argc, char* argv[])
{
    printf("Hello World!\n");
    return 0;
}

错误:

--------------------Configuration: testapp - Win32 Debug--------------------
Compiling...
StdAfx.cpp
Compiling...
testapp.cpp
D:\PROJECTS\FATT\testapp\testapp.cpp(8) : fatal error C1001: INTERNAL COMPILER ERROR
  (compiler file 'E:\8783\vc98\p2\src\P2\main.c', line 494)
    Please choose the Technical Support command on the Visual C++
    Help menu, or open the Technical Support help file for more information
Error executing cl.exe.

testapp.exe - 1 error(s), 0 warning(s)

为什么printf和sprintf无法正常工作?

2 个答案:

答案 0 :(得分:1)

如果你真的在没有应用任何服务包的情况下运行VC ++ 6,那么可能是:FIX: You receive a "Fatal error C1001" error message when you compile by using the /ZI and /Yc command-line switches without a file name in Visual C++ 6.0

  

使用没有文件名的/ ZI和/ Yc命令行开关在Microsoft Visual C ++中编译时,您可能会收到以下错误消息:   致命错误C1001:内部编译器错误   (编译器文件'E:\ 8168 \ vc98 \ p2 \ src \ P2 \ main.c',第494行)

     

状态

     

此错误已在Visual Studio 6.0 Service Pack 3中得到纠正。

     

解决方法

     

要解决此问题,请使用以下方法之一:

     
      
  • 使用/ Zi命令行开关而不是/ ZI命令行开关进行编译。

  •   
  • 使用/ Yc命令行开关提供文件名。例如,使用以下语法:   / YC “文件名”

  •   

答案 1 :(得分:0)

我的第一个想法是可能需要VS6 SP6。 (上一个答案)。 大型项目将失败(包含大量文件)CL.exe崩溃也在SP3中得到修复。 您无需在Win7及更高版本的安装中安装所有VS6。有一个需要跳过的包,ADO / RDS和OLE提供程序。 如果您尝试安装这些组件,VS6.0安装将开箱即用,之后VS6 SP6将无法正常安装。

Screenshot of the VS6 install customization required for successful install of SP6 later

我在2015年在亚马逊云中做了很多工作,看看VS6.0是否会安装在Win2012中,而且确实如此。我认为Win7 / 8/10将是类似的。

我们在去年(2016年)在VS6.0中发现了一个/ GF(字符串池)错误,如果你有字符串的运行时搜索,这可能会搞砸。可以将两个不同的字符串名称合并为一个字符串,因此搜索字符串列表将永远不会在运行时找到其中一个字符串。 / GF由/ ZI(IIRC)隐含,因此更改为/ Zi。 (我可能已经改变了)。 建议从VS6.0开始 - >尽快。我知道这可能是不可能的:(。