Visual Studio 2015 Update 1 中的 C++ 内部编译器错误
Posted
技术标签:
【中文标题】Visual Studio 2015 Update 1 中的 C++ 内部编译器错误【英文标题】:Internal Compiler Error with C++ in Visual Studio 2015 Update 1 【发布时间】:2015-12-29 14:24:10 【问题描述】:我更新到 Visual Studio 2015 Update 1,但现在我在为 64 位编译发布配置时收到以下错误,一切都适用于 32 位和/或调试版本。
fatal error C1001: An internal error has occurred in the compiler.
(compiler file 'f:\dd\vctools\compiler\utc\src\p2\main.c', line 246)
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
link!InvokeCompilerPass()+0x2d4bd
link!DllGetC2Telemetry()+0xae663
这个错误不是发生在我的每个项目上,而是发生在一些项目上。
简化指定位置实际上是不可能的,编译器崩溃的位置通常只是一个非常简单的一行函数,更改此代码也会导致在不同位置出现相同的错误。据我所知,它必须通过优化和内联来做一些事情。但更改优化选项也无济于事。
谁能告诉我如何定位真正有问题的代码或一些编译器选项以避免此错误?
我不想相信更新已损坏。
【问题讨论】:
在连接时报告:connect.microsoft.com/VisualStudio/feedback @magicandre1981 似乎已经在connect.microsoft.com/VisualStudio/feedback/details/1767109/… 和 cmets 的其他地方i1.blogs.msdn.com/b/vcblog/archive/2015/12/01/… 上报告了连接。不过,我看不到任何分辨率。 【参考方案1】:升级到 MSVC 2015 更新 1 后,我们在其中一个项目中遇到了 C1001。
通过反复试验,我们确定 ClCompile/AssemblerOutput
属性是我们案例的罪魁祸首。删除此属性不再导致 C1001
来源:https://trac.osgeo.org/mapguide/ticket/2580
2016 年 4 月 6 日更新:我尝试使用 MSVC 2015 Update 2 构建同一个项目,但未删除 ClCompile/AssemblerOutput
属性,并且在构建此项目时我不再获得 C1001。我认为更新 2 修复了它。
【讨论】:
【参考方案2】:尝试在项目优化中设置为禁用(/Od),它可能会解决问题。
在 Visual Studio 开发中设置此编译器选项 环境
打开项目的“属性页”对话框。 单击 C/C++ 文件夹。 点击优化属性页。 修改优化属性。
来源:https://msdn.microsoft.com/en-us/library/aafb762y.aspx
希望我的回答能支持你的问题。
【讨论】:
【参考方案3】:在 Release|x64 中重新编译 JSON 库。 Config 设置为最大化速度 (/O2),但 General 使用的是“No Whole Program Optimization”。 从“无整个程序优化”更改为使用链接时间代码生成(我相信标志是 /LTCG)构建成功。
【讨论】:
其实也是C/C++、Output Files、Assembler Output需要在“No Listing”上。【参考方案4】:当我们将公司的代码库从 VC10 转换为 VC14 时,我也遇到了这个问题。在我们的例子中,当目标 x64 和 SEH (/EHa
) 在打开汇编程序输出的同时启用时,就会出现问题。在我们的例子中,当在编译代码中调用流插入运算符(即std::cout::operator<<
)时,该错误似乎发生了。
在我们的例子中,动态链接 CRT 而不是静态链接(即 /MT
而不是 /MD
)似乎可以在不禁用汇编程序输出的情况下解决该问题。这不是我在静态链接 CRT 中发现的第一个问题(例如,在 MFC 中调整 CPane 窗口大小时也会导致光标丢失)。
这件事被报告给了微软(https://connect.microsoft.com/VisualStudio/feedback/details/2216490/compiler-crashes-at-string-stream-insertion-operator),但是两个半月后,他们似乎连看都没看……
编辑: 据 Micrsoft 称,VS2015 Update 2 已修复此问题。它在我们的代码库中进行了测试。
【讨论】:
以上是关于Visual Studio 2015 Update 1 中的 C++ 内部编译器错误的主要内容,如果未能解决你的问题,请参考以下文章
Visual Studio 2015 Update 1 中的 C++ 内部编译器错误
Visual Studio Enterprise 2015 with Update 3 iso 下载地址
Visual Studio 2015 Update 1 安装到最后 KB3022398 错误解决方法
SharePoint 中的 Visual Studio Team Foundation 服务器 Web 部件无法连接到 TFS 2015 Update 3
Visual Studio 2015 NuGet Update-Package 失败/报错:Update-Package : Unable to load the service index for