锐英源软件
第一信赖

精通

英语

开源

擅长

开发

培训

胸怀四海 

第一信赖

当前位置:锐英源 / 开源技术 / C++开源社区 / error C1001: 内部编译器错误

服务方向

人工智能数据处理
人工智能培训
kaldi数据准备
小语种语音识别
语音识别标注
语音识别系统
语音识别转文字
kaldi开发技术服务
软件开发
运动控制卡上位机
机械加工软件
软件开发培训
Java 安卓移动开发
VC++
C#软件
汇编和破解
驱动开发

联系方式

固话:0371-63888850
手机:138-0381-0136
Q Q:396806883
微信:ryysoft

锐英源精品原创,禁止转载和任何形式的非法内容使用,违者必究


error C1001: 内部编译器错误

报错的源代码行是:

     friend BOOST_OPERATORS_CONSTEXPR bool operator==(const U& y, const T& x) { return x == y; }

出问题的代码涉及到结构体、继承、友元、模板、模板参数和操作符重载,大家也注意到是BOOST的代码,BOOST本来就很复杂,出这问题非常头疼。

报错的编译输出是:


3>D:\boost_1_74_0\boost\operators.hpp(161,1): fatal error C1001: 内部编译器错误。
3>(编译器文件“msc1.cpp”,第 1603 行)
3> 要解决此问题,请尝试简化或更改上面所列位置附近的程序。
3>如果可以,请在此处提供重现步骤: https://developercommunity.visualstudio.com
3>请选择 Visual C++
3>“帮助”菜单上的“技术支持”命令,或打开技术支持帮助文件来获得详细信息。
3>D:\boost_1_74_0\boost\operators.hpp(141): message : 查看对正在编译的 类 模板 实例化“boost::operators_impl::equality_comparable2<T,U,B>”的引用
3> with
3> [
3> T=boost::serialization::version_type,
3> U=unsigned int,
3> B=boost::operators_impl::operators_detail::empty_base<boost::serialization::version_type>
3> ]
3>D:\boost_1_74_0\boost\operators.hpp(421): message : 查看对正在编译的 类 模板 实例化“boost::operators_impl::less_than_comparable2<T,U,boost::operators_impl::equality_comparable2<T,U,B>>”的引用
3> with
3> [
3> T=boost::serialization::version_type,
3> U=unsigned int,
3> B=boost::operators_impl::operators_detail::empty_base<boost::serialization::version_type>
3> ]
3>D:\boost_1_74_0\boost\operators.hpp(168): message : 查看对正在编译的 类 模板 实例化“boost::operators_impl::totally_ordered2<boost::serialization::version_type,unsigned int,boost::operators_impl::operators_detail::empty_base<T>>”的引用
3> with
3> [
3> T=boost::serialization::version_type
3> ]
3>D:\boost_1_74_0\boost\operators.hpp(152): message : 查看对正在编译的 类 模板 实例化“boost::operators_impl::equality_comparable1<T,B>”的引用
3> with
3> [
3> T=boost::serialization::version_type,
3> B=boost::operators_impl::totally_ordered2<boost::serialization::version_type,unsigned int,boost::operators_impl::operators_detail::empty_base<boost::serialization::version_type>>
3> ]
3>D:\boost_1_74_0\boost\operators.hpp(427): message : 查看对正在编译的 类 模板 实例化“boost::operators_impl::less_than_comparable1<T,boost::operators_impl::equality_comparable1<T,B>>”的引用
3> with
3> [
3> T=boost::serialization::version_type,
3> B=boost::operators_impl::totally_ordered2<boost::serialization::version_type,unsigned int,boost::operators_impl::operators_detail::empty_base<boost::serialization::version_type>>
3> ]
3>D:\boost_1_74_0\boost\serialization\serialization.hpp(61): message : 查看对正在编译的 类 模板 实例化“boost::operators_impl::totally_ordered1<boost::serialization::version_type,boost::operators_impl::totally_ordered2<boost::serialization::version_type,unsigned int,boost::operators_impl::operators_detail::empty_base<T>>>”的引用
3> with
3> [
3> T=boost::serialization::version_type
3> ]
3>“E:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Tools\MSVC\14.29.30133\bin\HostX86\x64\CL.exe”中的内部编译器错误
3> 请选择 Visual C++
3>“帮助”菜单上的“技术支持”命令,或打开技术支持帮助文件来获得详细信息

我试了几个方法都没有解决,比如编译选项的优化;C++标准的调整,用C++11、C++14、C++17或C++20都不行;有些国外网友说出问题的代码可能导致编译器展开死循环,要改代码,但是这是BOOST的代码,不可能改。所以问题进入僵局。

后来发现在Release模式下编译不出错,Debug模式下才出这样的错误,所以就将就用了。

BOOST不是微软的,不归VS管,所以不是自己平台的代码,微软兼容起来有困难,C++标准虽然一样,但是各个公司实现的方法不一样,这个不一样可能就会导致问题,Debug和Release的编译链接参数不一样,具体哪个细节不行,很难查的,用开源的代码就要有这个心理准备。

友情链接
版权所有 Copyright(c)2004-2021 锐英源软件
公司注册号:410105000449586 豫ICP备08007559号 最佳分辨率 1024*768
地址:郑州大学北校区院(文化路97号院)内