C++程序启动时报“R6030 CRT not initialized”错误
Posted IT老张
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++程序启动时报“R6030 CRT not initialized”错误相关的知识,希望对你有一定的参考价值。
在使用VS调试C++程序时,每次启动调试都弹出如下的提示:
提示“R6030 CRT not initialized”,C++程序始终无法启动,也就没法进行代码的调试了。这太奇怪了,以前都没遇到过,CRT是C/C++的运行库,应该是在main函数运行之前就加载了,为啥会出现运行时库没初始化的问题,太让人费解了。
1、使用Windbg启动exe程序,查看到SPY++的库竟然注入到exe进程中了
VS调试启动报错时,VS的输出窗口看不到任何信息。于是尝试使用windbg启动exe程序,看看报错时能否看到有用的信息。
windbg刚启动exe就报错了:
发现windbg的输出信息中,看到启动exe程序时居然加载了spy++的spyxxhk.dll库,这个有点搞不懂,exe程序和SPY++的库有什么关系?
SPY++是微软Visual Studio自带的一个小工具,可以查看窗口的信息。
windbg报错后就中断了下来,于是输入kn命令查看此刻的函数调用堆栈,更加清楚地看到SPY++的模块:
难道是SPY++为探测系统当前打开的所有窗口信息,会将相关库注入到所有的进程中?是有这个可能的。于是将之前启动的SPY++程序关闭后,上述exe程序就可以启动了,看来确实很SPY++有关系。但是怎么会导致C运行时库没初始化或者初始化失败呢?
2、在微软官方网站中找到了关于“R6030 CRT not initialized”错误的说明
于是到网上搜了以下,找到微软官方网站中关于“R6030 CRT not initialized”错误的说明。微软该页面的网址为:
C 运行时错误 R6030 | Microsoft Docs
链接中的截图如下:
如上图所述,可能是因为第三方软件的代码注入某进程中,会导致“R6030 CRT not initialized”错误。根据上面windbg抓到的信息,能确认是SPY++有模块注入到我们即将启动的exe进程中,所以导致本例中的问题。
所以遇到这个问题时,尝试关闭一些打开的软件试试,可能就能解决问题了。
以上是关于C++程序启动时报“R6030 CRT not initialized”错误的主要内容,如果未能解决你的问题,请参考以下文章
C++程序启动时报“R6030 CRT not initialized”错误
解决Oracle 11g重建em时报错创建档案资料库时出错以及删除原有em时报监听程序未启动
解决调用caffe的c++程序运行时报错: ./netapp.bin: error while loading shared libraries: libcaffe.so.1.0.0: cannot