天天看点

案例分享:fatal error C1001: 编译器中发生内部错误

1>正在生成代码

1>c:\********************************\src\thread.cpp : fatal error C1001: 编译器中发生内部错误。

1>(编译器文件“d:\agent\_work\1\s\src\vctools\compiler\utc\src\p2\main.c”,第 187 行)

1> 要解决此问题,请尝试简化或更改上面所列位置附近的程序。

1>请选择 Visual C++

1>“帮助”菜单上的“技术支持”命令,或打开技术支持帮助文件来获得详细信息。

1>  link!InvokeCompilerPass()+0x3965d

1>  link!CloseTypeServerPDB()+0x11d9a7

1>

情况描述:

Debug下编译正常,Release下编译报错,出问题的thread.cpp文件没有修改过

环境:Win10 + VS2017

出现做了如下尝试

1、升级IDE,IDE有可更新的版本,更新后问题依旧。

2、注释thread.cpp所有具体实现和头文件引用,问题依旧

3、调整编译器优化,原来项目的优化项“最大优化(优选速度) (/O2)",后经过调查有网友表示调整为不优化可通过编译。

     打开项目的属性页->C++ -> 优化 -> 优化项调整为"禁用/od",然后重新编译通过,后面尝试"优化(优选速度) (/Ox)"也可以通过编译。

    但是不希望调整该优化选项,保持编译器的最大优化。暂时不考虑该解决方式。

4、最后对比了下最近改动可能导致问题的可疑点,进行了还原,然后编译通过,再还原回来,编译依然通过。

最后又多次重新编译尝试,没有出现编译器错误.......莫名奇妙的修复了,如果有大佬知道具体原因欢迎分享。

如果遇到类似的问题可以考虑如下步骤解决

1、如果有提示具体的文件和行数,则可以直接从该出问题的代码调整看看是否能修复

2、如果没有具体的行数,大概率不完全由于该文件直接导致的,可以考虑先清理下工程,重启系统,有时候启动时间过长会导致一些不可预知的错误。

3、如果重启还没有效果,不介意优化选项调整的话,可直接调整编译优化选项。

4、没招就只能走查代码了,需要比对下最近最可疑的修改尝试还原。

5、有些问题可能是特定IDE版本导致的,可以试试更新IDE

继续阅读