c语言编译器内部错误,C++致命错误C1001:编译器中发生内部错误
在发布模式下编译时出现以下错误。
1>d:\users\eyal\projects\code\yalla\core\src\runbox\win32\window.cpp : fatal error C1001: An internal error has occurred in the compiler.
1> (compiler file 'f:\dd\vctools\compiler\utc\src\p2\main.c', line 249)
1> To work around this problem, try simplifying or changing the program near the locations listed above.
1> Please choose the Technical Support command on the Visual C++
1> Help menu, or open the Technical Support help file for more information
1> link!RaiseException()+0x48
1> link!CxxThrowException()+0x65
1> link!std::_Xout_of_range()+0x1f
1> link!InvokeCompilerPass()+0x1b4e2
1> link!InvokeCompilerPass()+0x22efe
1> link!InvokeCompilerPass()+0x2332e
1> link!InvokeCompilerPass()+0x232f9
1> link!InvokeCompilerPass()+0x233cb
1> link!InvokeCompilerPass()+0x22b04
1> link!InvokeCompilerPass()+0x22d86
1> link!DllGetC2Telemetry()+0x115837
1>
1> 1>
1>LINK : fatal error LNK1257: code generation failed我正在使用VS2015 Update 2 RC。
我不确定,但也许这是优化器中的错误?
导致它的代码如下所示:
在window.h
class Window {
public:
Window();
~Window();
void show();
void hide();
private:
class NativeControl;
std::unique_ptr _window;
};window.cpp
class Window::NativeControl : public NativeWindow {
public:
NativeControl() : NativeWindow() { }
};
Window::Window()
: _window(std::make_unique<:nativecontrol>()) {
}
Window::~Window() {
}
void Window::show()
{
_window->show(WindowShowMode::Show);
}
void Window::hide()
{
_window->show(WindowShowMode::Hide);
}NativeWindow是任何操作系统的本地窗口。
以下是使用GCC 5.1编译的工作代码:https://ideone.com/4YvjRK
只是做一个笔记。
如果我将删除继承并将其替换为这样的东西。
class Window::NativeControl {
public:
void show(WindowShowMode showMode)
{
}
};它会正常工作!
这里是与GCC 5.1编译相同的代码,没有继承:https://ideone.com/Mu0A42
似乎导致此行为的原因是从NativeWindow派生NativeControl。
重现它的步骤如下:
从Window类中删除dtor声明和定义。
尝试构建(不重建)。
编译器会抱怨并给你一堆错误。
1>C:\Program Files (x86)\Microsoft Visual Studio
14.0\VC\include\memory(1194): error C2338: can't delete an incomplete type 1> 1> 1>C:\Program Files (x86)\Microsoft Visual Studio
14.0\VC\include\memory(1195): warning C4150: deletion of pointer to incomplete type 'Yalla::Window::NativeControl'; no destructor called
1>
d:\Users\Eyal\Projects\Code\Yalla\core\src\runbox\include\window.h(13):
note: see declaration of 'Yalla::Window::NativeControl' 1>
window.cpp 1> 1>Build FAILED.
将dtor添加回Window类。
重新构建(不重建)。
此时,编译器应该抱怨以下错误“致命错误C1001:编译器发生内部错误。”
有趣的部分是做重建似乎解决了这个问题!
我想要实现的基本上是将NativeWindow的实际实现放在不同的文件中,主要是为了简单起见,而不是关于可重用性。
我想这不是在继承中做的,也许会让unique_ptr模板混淆,我也可以通过组合来做到这一点,并通过getter公开NativeWindow的实例,它可能会工作,但问题是是否有更好的方法来做到这一点?
我在很长一段时间后重新学习C++,我没有碰它,所以如果我所做的一些事情没有意义,请告诉我!
更新:
C++标准说:
unique_ptr的模板参数T可能是一个不完整的类型。
我在Herb Sutter的blog上发现了一篇关于它的文章。
c语言编译器内部错误,C++致命错误C1001:编译器中发生内部错误相关推荐
- GDI+ 中发生一般性错误(生成验证码时出现的错误)
我在生成验证码时,出现这样的错误:GDI+ 中发生一般性错误. 怎么解决? 转载于:https://www.cnblogs.com/happyangle/archive/2008/06/11/1217 ...
- GDI+中发生一般性错误
在PictureBox中有一副图,希望保存成图片,用 pictureBox1.Image("c:\\aa.jpg",System.Drawing.Imaging.ImageForm ...
- GDI+ 中发生一般性错误
使用Chartlet时打开页面跳出以下错误: "/"应用程序中的服务器错误. GDI+ 中发生一般性错误. 说明: 执行当前 Web 请求期间,出现未处理的异常.请检查堆栈跟踪信息 ...
- Image.Save()发生“GDI+ 中发生一般性错误”
从数据库中读取的图片是byte[]类型,将其转换成Image可以正常显示,但是调用image.Save()时会发生"GDI+ 中发生一般性错误". public static Sy ...
- GDI+中发生一般性错误的解决办法 from http://www.cnblogs.com/winzheng/archive/2008/12/23/1360440.html...
GDI+中发生一般性错误的解决办法 这个错误经常发生,代码如下: private static byte[] GetBytes (Image image) { ...
- GDI+中发生一般性错误的解决办法(转帖)
今天在开发.net引用程序中,需要System.Drawing.Image.Save 创建图片,debug的时候程序一切正常,可是发布到IIS后缺提示出现"GDI+中发生一般性错误" ...
- GDI+中发生一般性错误 以及发布时候需要配置的文件
mxcms在本地测试完毕.搬家到服务器上,修改测试数据新闻的时候,提示"GDI+中发生一般性错误". 找了下,发现是缩略图的原因. 解决方法:将缩略图文件夹里的文件全部删除. fi ...
- GDI+ 中发生一般性错误(在 OutputStream 中保存 PNG 格式图像时遇到的问题)
在将图片以 PNG 格式保存至 Response.OutputStream 时,会碰到如下错误: GDI+ 中发生一般性错误. 原因: 在写 PNG 格式的图像时,指针需要在存储的位置来回移动.而 R ...
- C#界面设计--5--Bitmap.save保存图片时: GDI+ 中发生一般性错误 解决办法
Bitmap.save保存图片时: GDI+ 中发生一般性错误 解决办法 源程序: var date = DateTime.Now.ToString("yyyy-MM-dd");/ ...
- GDI+ 中发生一般性错误。
GDI+ 中发生一般性错误. "/wechat"应用程序中的服务器错误. GDI+ 中发生一般性错误. 说明: 执行当前 Web 请求期间,出现未经处理的异常.请检查堆栈跟踪信息, ...
最新文章
- 值得深思的问题——分库分表就能无限扩容吗?
- 终于有人把分布式事物TCC讲明白了
- 8、计算机图形学——纹理的相关问题及解决办法
- 接到一个新需求:手机照片视频存储及备份需求整理及分析
- 质量兴农战略规划-农业大健康·韩长赋:质量效益和竞争力
- Wifi模块—源码分析Wifi热点扫描2(Android P)
- Yslow-23条规则
- Windows配置tomcat环境
- android 仿QQ手机版
- 程序员一年稳赚50w,却被群嘲只造改bug!TA说:2020年我的愿望是........
- linux 系统性能分析常用命令
- 教室录播系统方案_录播教室技术解决方案
- 计算机登录界面没有用户显示不出来,win7让administrator账户不出现在登陆界面方法...
- win7计算机 我的文档,我的文档在哪,详细教您win7“我的文档”在哪里
- S3C2440的中断体系结构
- “Physically-Based Rendering for Indoor Scene Understanding Using Convolutional Neural Networks”论文阅读
- Chrome插件:请开始你的表演,smartUp手势骚操作
- java毕业设计旅游网站设计源码+lw文档+mybatis+系统+mysql数据库+调试
- 可计算性、可判定性和可满足性
- 定义一个动物类java_Java问题利用接口继承完成对生物、动物、人三个接口的定义,其中生物接口定义呼吸抽象方法,动物接口定义了吃饭和睡觉两个抽...