Я пытаюсь построить проект (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.
Хорошо. Я решил проблему, создав новый проект и добавив все .cpp & .h файлы из старого проекта к нему.
Я все еще думаю, что была проблема с настройками проекта, которые я установил по умолчанию при создании нового проекта.
В Visual Studio 2017 вам нужно переключить Project-> Properties-> C / C ++ -> Optimization-> Whole Program Optimization на Нет вместо Да.
Это случилось со мной, и я исправил это, перейдя в папку Release и удаление все файлы * .ipdb. Я заметил на проекте, что сделал Ссылка успешно, что Visual Studio иногда говорил:
Все 5226 функции были скомпилированы, потому что нет ни одного пригодного для использования IPDB / IOBJ из
предыдущая подборка была найдена.
..и затем, когда я проверил даты в файлах * .ipdb для проекта, который не удалось связать, я заметил, что дата файла еще вчера вечером. После того как я удалил все файлы * .ipdb в папке Release, он заставил Visual Studio 2015 воссоздать их при следующей сборке, а затем мой проект был успешно собран!