В VC++ VS6 простой printf выдает фатальную ошибку C1001: внутренняя ошибка компилятора
Я использую Visual Studio 6, VC++ на Windows 7 и написал простую программу 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 ответа
Если вы действительно запускаете VC++ 6 без каких-либо пакетов обновления, это может быть следующим: FIX: вы получаете сообщение об ошибке "Fatal error C1001" при компиляции с использованием параметров командной строки /ZI и /Yc без имени файла в Visual C++ 6.0.
При компиляции в Microsoft Visual C++ с использованием параметров командной строки /ZI и /Yc без имени файла может появиться следующее сообщение об ошибке: фатальная ошибка C1001: ВНУТРЕННЯЯ ОШИБКА КОМПИЛЕРА (файл компилятора 'E:\8168\vc98\p2\src\P2\main.c', строка 494)
СТАТУС
Эта ошибка была исправлена в Visual Studio 6.0 с пакетом обновления 3.
Временное решение
Чтобы обойти эту проблему, используйте один из следующих методов:
Компилируйте, используя ключ командной строки /Zi вместо ключа командной строки /ZI.
Введите имя файла, используя ключ командной строки /Yc. Например, используйте следующий синтаксис: /Yc"FileName"
Моей первой мыслью было, что VS6 SP6 может потребоваться. (Предыдущий ответ). Большие проекты потерпят неудачу (с большим количеством файлов), есть сбой CL.exe, который также исправлен в SP3. Вам не нужно устанавливать все VS6 при установке для Win7 и новее. Есть пакет, который нужно пропустить, ADO/RDS и OLE Provider. Если вы попытаетесь установить эти компоненты, установка VS6.0 будет зависать из коробки, и позже VS6 SP6 не будет установлен должным образом.
В 2015 году я проделал большую работу в облаке Amazon, чтобы посмотреть, будет ли VS6.0 установлен в Win2012, и это произойдет. Я предполагаю, что Win7/8/10 будет похожим.
Также есть ошибка /GF (String Pooling), которую мы обнаружили в прошлом году (2016) в VS6.0, которая может действительно испортить ситуацию, если у вас есть поиск строк во время выполнения. Два разных имени строки могут быть объединены в одну строку, поэтому поиск по списку строк никогда не найдет одно из двух во время выполнения. /GF подразумевается /ZI (IIRC), поэтому измените на /Zi. (Возможно, я это переключил). Рекомендуется перейти с VS6.0 -> ON ASAP. Я знаю, что это может быть невозможно:(.