фатальная ошибка C1001: в компиляторе произошла внутренняя ошибка - PullRequest
15 голосов
/ 16 августа 2011

При компиляции на платформе x64 я получаю следующую ошибку:

c:\codavs05\hpsw-sc\ovpacc\tools\codaaccesstest\coda_access.cpp(1572): fatal error C1001: An internal error has occurred in the compiler.

(compiler file 'f:\dd\vctools\compiler\utc\src\p2\sizeopt.c', line 55)
To work around this problem, try simplifying or changing the program near the locations listed above.
Please choose the Technical Support command on the Visual C++
Help menu, or open the Technical Support help file for more information

------ Build started: Project: asyncexample, Configuration: Release Win32 ------

Если я изменяю настройки на файл препроцессора (Да), я не получаю никакой ошибки.

О моей среде: обновление Microsoft Visual Studio 2005 до 2010

Пожалуйста, помогите.

Ответы [ 12 ]

9 голосов
/ 16 августа 2011

Я сталкивался с этой ошибкой много раз в VC ++.Сделайте следующие шаги.Они всегда помогали мне с этой проблемой:

  1. Посмотрите точное местоположение, на которое указывает ошибка компилятора.
  2. Найдите любые внешние типы или классы, используемые там в этом месте.
  3. Измените порядок «include path» тех файлов, которые были найдены на шаге 2, и перестройте решение.
  4. Надеюсь, что поможет !!!!
8 голосов
/ 03 февраля 2014

Я получаю ту же ошибку с VC2012.Настройка свойств проекта Оптимизация на Отключено (/ Od) решила проблему.

6 голосов
/ 02 августа 2017

У меня была эта проблема с VS2015 при локальном построении в Windows.

Чтобы решить ее, я удалил свою папку сборки (Выходной каталог, как показано в Свойствах / Общие) и перестроил проект.

Это всегда помогает, когда во время сборки происходят странные вещи.

3 голосов
/ 27 апреля 2017

В моем решении я удалил выходной dll-файл проекта и произвел перестройку проекта.

2 голосов
/ 27 февраля 2018

Я получил эту ошибку, используя библиотеку boost с VS2017. Очистка раствора и его восстановление решили проблему.

2 голосов
/ 30 января 2017

В моем случае было использование статической лямбда-функции с аргументом QStringList. Если я прокомментировал регионы, где использовался QStringList, файл был скомпилирован, иначе компилятор сообщил об ошибке C1001. Изменение лямбда-функции на нестатическое решило проблему (очевидно, другие варианты могли бы использовать глобальную функцию в анонимном пространстве имен или статический закрытый метод класса).

2 голосов
/ 07 марта 2014

Я столкнулся с той же ошибкой и потратил немало времени на поиски этой проблемы. Наконец, я обнаружил, что та функция, на которую указывает ошибка, имеет бесконечный цикл while. Исправлено, и ошибка исчезла.

1 голос
/ 27 ноября 2017

Я получил этот код с кодом во время рефакторинга с недостаточной осторожностью (и с шаблонами, именно в этом случае ICE вместо обычной ошибки времени компиляции)

Упрощенный код:

void myFunction() {
    using std::is_same_v;
    for (auto i ...) {
       myOtherFunction(..., i);
    }
}

void myOtherFunction(..., size_t idx) {
    // no statement using std::is_same_v;
    if constexpr (is_same_v<T, char>) {
        ...
    }
}
1 голос
/ 07 сентября 2016

Я получил ту же ошибку, но с другим файлом, на который есть ссылка в сообщении об ошибке, в сборке VS 2015 / x64 / Win7. В моем случае файл был main.cpp. Исправить это для меня было так же просто, как перестроить все (и найти что-то еще, пока обрабатывается миллион с лишним строк кода).

Обновление : выясняется, что основной причиной является сбой моего жесткого диска. После того, как другие симптомы побудили меня запустить chkdsk, я обнаружил, что большинство поврежденных секторов, которые были заменены, были в .obj, .pdb и других файлах, сгенерированных компилятором.

1 голос
/ 09 января 2013

У меня также была эта проблема при обновлении с VS2008 до VS2010.

Чтобы исправить, я должен установить патч VS2008 (KB976656).

Может быть, есть похожий патч для VS2005?

...