Visual Studio 2015 фатальная ошибка C1001

Я пытаюсь построить проект (SUBSYSTEM:WINDOWS), и мой основной выглядит так:

int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) {/*Code here*/}

Я получаю следующую ошибку в VisualStudio Community 2015 v. 14.0.25431.01 при создании версии выпуска:

1>e:\github\g19systemmonitor\g19tastatur applet\main.cpp : fatal error C1001: Interner Compilerfehler.
1>  (Compilerdatei "f:\dd\vctools\compiler\utc\src\p2\main.c", Zeile 255)
1>   Vereinfachen oder ändern Sie das Programm im Umfeld der oben aufgeführten Positionen. Wählen
1>  Sie im Menü "Hilfe" von Visual C++ den Befehl "Technischer Support",
1>  oder öffnen Sie die Hilfedatei des technischen Supports, um weitere Informationen zu erhalten.
1>    link!InvokeCompilerPass()+0x24399
1>    link!InvokeCompilerPass()+0x24399
1>    link!InvokeCompilerPass()+0x1dda7
1>    link!InvokeCompilerPass()+0x1dc8b
1>    link!InvokeCompilerPass()+0x298f7
1>    link!InvokeCompilerPass()+0x214ba
1>    link!DllGetC2Telemetry()+0xe39f7
1>
1>e:\github\g19systemmonitor\g19tastatur applet\main.cpp : fatal error C1001: Interner Compilerfehler.
1>  (Compilerdatei "f:\dd\vctools\compiler\utc\src\p2\main.c", Zeile 255)
1>   Vereinfachen oder ändern Sie das Programm im Umfeld der oben aufgeführten Positionen. Wählen
1>  Sie im Menü "Hilfe" von Visual C++ den Befehl "Technischer Support",
1>  oder öffnen Sie die Hilfedatei des technischen Supports, um weitere Informationen zu erhalten.
1>    link!InvokeCompilerPass()+0x24399
1>    link!InvokeCompilerPass()+0x1dda7
1>    link!InvokeCompilerPass()+0x1dc8b
1>    link!InvokeCompilerPass()+0x298f7
1>    link!InvokeCompilerPass()+0x214ba
1>    link!DllGetC2Telemetry()+0xe39f7
1>
1>
1>LINK : fatal error LNK1000: Internal error during IMAGE::BuildImage
1>
1>    Version 14.00.24215.1
1>
1>    ExceptionCode            = C0000005
1>    ExceptionFlags           = 00000000
1>    ExceptionAddress         = 502E892F (4FF40000) "D:\Programme\Visual Studio 2015\VC\bin\c2.dll"
1>    NumberParameters         = 00000002
1>    ExceptionInformation[ 0] = 00000000
1>    ExceptionInformation[ 1] = 00000036
1>
1>  CONTEXT:
1>    Eax    = 00000000  Esp    = 012FE5C0
1>    Ebx    = 00000000  Ebp    = 012FE5D4
1>    Ecx    = 05650210  Esi    = 00000024
1>    Edx    = 00000000  Edi    = 05650210
1>    Eip    = 502E892F  EFlags = 00010246
1>    SegCs  = 00000023  SegDs  = 0000002B
1>    SegSs  = 0000002B  SegEs  = 0000002B
1>    SegFs  = 00000053  SegGs  = 0000002B
1>    Dr0    = 00000000  Dr3    = 00000000
1>    Dr1    = 00000000  Dr6    = 00000000
1>    Dr2    = 00000000  Dr7    = 00000000

Несколько недель назад мне удалось создать релизную версию проекта с теми же настройками компилятора и тем же кодом, который я сейчас отлично использую. Я попытался удалить оптимизации в соответствии с рекомендациями в MSDN, которые не работали.

Но я заметил кое-что странное:

Когда я удаляю любой из 3 файлов (.exe.iobj.ipdb) в папке Release и перестраиваю решение, оно работает просто отлично (создаются новые версии 3 файлов). Когда я изменяю любой параметр в проекте или когда я добавляю только одну строку кода и пытаюсь пересобрать, возникает та же самая ошибка. Если я снова удалю один из этих 3 файлов, я смогу собрать еще раз.

Я думаю, что это может быть вызвано некоторыми настройками компилятора, которых я не знаю, но я не уверен, так как я не эксперт по VisualStudio.

3 ответа

Решение

Хорошо, я решил проблему, создав новый проект и добавив в него все файлы.cpp & .h из старого проекта.

Я все еще думаю, что была проблема с настройками проекта, которые я установил по умолчанию при создании нового проекта.

Это случилось со мной, и я исправил это, перейдя в свою папку Release и удалив все файлы *.ipdb. Я заметил, что проект успешно связывался с Visual Studio:

Все 5226 функций были скомпилированы, так как не было найдено пригодных для использования IPDB/IOBJ из предыдущей компиляции.

... и затем, когда я проверил даты в файлах *.ipdb для проекта, который не удалось связать, я заметил, что дата файла была еще со вчерашнего вечера. После того как я удалил все файлы *.ipdb в папке Release, он заставил Visual Studio 2015 воссоздать их при следующей сборке, а затем мой проект был успешно собран!

В Visual Studio 2017 вам нужно переключить Project->Properties->C/C++->Optimization->Whole Program Optimization на Нет вместо Да.

Другие вопросы по тегам