我刚刚将 Microsoft Visual Studio Enterprise 2015 从 Update 2 升级到 Update 3,现在收到以下错误:
致命错误 C1001:编译器中发生内部错误。
(编译器文件'f:\dd\vctools\compiler\utc\src\p2\wvm\mdmiscw.c',第2687行)
要解决此问题,请尝试简化或更改上面列出的位置附近的程序。
请选择 Visual C++ 帮助菜单上的技术支持命令,或打开技术支持帮助文件以获取更多信息
该位置是包含标题的第一行。项目有设置
/FR"x64\调试\" /GS /W3 /Zc:wchar_t /Zi /Od /Fd"x64\调试\vc140.pdb"
/Zc:内联 /fp:精确 /D "WIN32" /D "_DEBUG" /D "_WINDLL" /D
"_UNICODE" /D "UNICODE" /errorReport:提示 /WX- /Zc:forScope /clr
[一些 /FU"..."] /MDd /Fa"x64\Debug\" /EHa /nologo /Fo"x64\Debug\"
/Fp"....pch"
如何再次构建我的项目?
C1001 基本上表示编译器崩溃,即您可能创建了有效的 C/C++ 代码,该代码会在 VC 编译器中触发错误。通过以下方式提交错误报告可能是个好主意https://connect.microsoft.com/VisualStudio/Feedback https://connect.microsoft.com/VisualStudio/Feedback以便微软进一步调查。
我自己刚刚在使用 Visual Studio Express 2015 Update 3 编译 OpenCV 时遇到了 C1001。就我而言,C1001 错误消息还向我指出了触发编译器崩溃的 OpenCV 核心代码行。在研究了该特定行的实际代码语义之后,我怀疑编译器的浮点处理是问题的根本原因。它正在处理一个大的、硬编码的双数组查找表,这可能会导致舍入问题。 (以防万一有人用谷歌搜索这个,我在这里列出参考:opencv_core,mathfuncs_core.cpp,第 1261 行,宏扩展LOGTAB_TRANSLATE
).
就我而言,将编译器的浮点模型从“精确”设置为“严格”解决了 C1001 问题。但是,由于您没有包含导致 C1001 引发的行的代码片段,因此很难说上述内容是否也能解决您的问题。如果你想尝试一下,你可以在你的程序中找到编译器开关项目设置/C/C++/代码生成标签。代替精确(/fp:精确), 选择严格 (/fp:严格)作为浮点模型。此更改可能会影响代码的性能,但不应影响其精度。看https://msdn.microsoft.com/en-us/library/e7s85ffb.aspx https://msdn.microsoft.com/en-us/library/e7s85ffb.aspx了解更多信息。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)