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

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

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

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

提示“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进程中,所以导致本例中的问题。

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

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/4752149.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-11-08
下一篇2022-11-08

发表评论

登录后才能评论

评论列表(0条)

    保存