我正在尝试构建一个项目(SUBSYSTEM:WINDOWS),我的主要看起来像这样:
int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) {/*Code here*/}
构建发布版本时,我在VisualStudio社区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中推荐的优化,但这些优化不起作用。
但我注意到一些奇怪的事情:
当我删除Release文件夹中的任何3个文件(.exe .iobj .ipdb)并重建解决方案时,它工作得很好(正在创建3个文件的新版本)。当我更改项目中的任何设置或当我只添加一行代码并尝试重建时,会发生同样的错误。如果我再次删除这3个文件中的一个,我可以再次构建。
我认为这种行为可能是由某些编译器设置引起的,我不知道,但我不确定,因为我不是VisualStudio专家。
答案 0 :(得分:0)
O.k。我通过创建一个新项目并添加了所有.cpp&来解决了这个问题。 .h文件从旧项目到它。
我仍然认为项目设置存在问题,我通过创建新项目将其设置为默认值。
答案 1 :(得分:0)
在Visual Studio 2017中,您需要将Project-> Properties-> C / C ++ - > Optimization->整个程序优化切换为No而不是Yes。
答案 2 :(得分:0)
这发生在我身上,我通过转到我的Release文件夹并删除所有* .ipdb文件来修复它。我在项目中注意到已经成功链接,Visual Studio有时会说:
所有5226函数都已编译,因为没有可用的IPDB / IOBJ 之前的编译被发现。
..然后当我检查* .ipdb文件中未能链接的项目的日期时,我注意到文件日期仍然来自昨天晚上。删除Release文件夹中的所有* .ipdb文件后,它强制Visual Studio 2015在下一个版本中重新创建它们,然后我的项目成功构建!