C++程序启动时报“R6030 CRT not initialized”错误

在使用VS调试C++程序时,每次启动调试都弹出如下的提示:

图片[1]-C++程序启动时报“R6030 CRT not initialized”错误-卡核

提示“R6030 CRT not initialized”,C++程序始终无法启动,也就没法进行代码的调试了。这太奇怪了,以前都没遇到过,CRT是C/C++的运行库,应该是在main函数运行之前就加载了,为啥会出现运行时库没初始化的问题,太让人费解了。

1、使用Windbg启动exe程序,查看到SPY++的库竟然注入到exe进程中了

       VS调试启动报错时,VS的输出窗口看不到任何信息。于是尝试使用windbg启动exe程序,看看报错时能否看到有用的信息。

       windbg刚启动exe就报错了:

图片[2]-C++程序启动时报“R6030 CRT not initialized”错误-卡核

 发现windbg的输出信息中,看到启动exe程序时居然加载了spy++的spyxxhk.dll库,这个有点搞不懂,exe程序和SPY++的库有什么关系?

SPY++是微软Visual Studio自带的一个小工具,可以查看窗口的信息。

        windbg报错后就中断了下来,于是输入kn命令查看此刻的函数调用堆栈,更加清楚地看到SPY++的模块:

图片[3]-C++程序启动时报“R6030 CRT not initialized”错误-卡核

难道是SPY++为探测系统当前打开的所有窗口信息,会将相关库注入到所有的进程中?是有这个可能的。于是将之前启动的SPY++程序关闭后,上述exe程序就可以启动了,看来确实很SPY++有关系。但是怎么会导致C运行时库没初始化或者初始化失败呢?

2、在微软官方网站中找到了关于“R6030 CRT not initialized”错误的说明

       于是到网上搜了以下,找到微软官方网站中关于“R6030 CRT not initialized”错误的说明。微软该页面的网址为:

C 运行时错误 R6030 | Microsoft Docs

链接中的截图如下:

图片[4]-C++程序启动时报“R6030 CRT not initialized”错误-卡核

如上图所述,可能是因为第三方软件的代码注入某进程中,会导致“R6030 CRT not initialized”错误。根据上面windbg抓到的信息,能确认是SPY++有模块注入到我们即将启动的exe进程中,所以导致本例中的问题。

        所以遇到这个问题时,尝试关闭一些打开的软件试试,可能就能解决问题了。

© 版权声明
THE END
喜欢就支持一下吧
点赞1.7W+赞赏 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容