我在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无法正常工作?
答案 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将无法正常安装。
我在2015年在亚马逊云中做了很多工作,看看VS6.0是否会安装在Win2012中,而且确实如此。我认为Win7 / 8/10将是类似的。
我们在去年(2016年)在VS6.0中发现了一个/ GF(字符串池)错误,如果你有字符串的运行时搜索,这可能会搞砸。可以将两个不同的字符串名称合并为一个字符串,因此搜索字符串列表将永远不会在运行时找到其中一个字符串。 / GF由/ ZI(IIRC)隐含,因此更改为/ Zi。 (我可能已经改变了)。 建议从VS6.0开始 - >尽快。我知道这可能是不可能的:(。