gpt4 book ai didi

c++ - 这个 "CRT not initialized"错误是怎么回事?

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:04:16 26 4
gpt4 key购买 nike

我在 Visual Studio 2012 Express(当然是桌面版)中创建了一个空的 C++ 项目,并添加了一些随机的基本代码:

#include <cstdio>
#include <cstdlib>

typedef struct examplestruct
{
unsigned char num1;
unsigned short num2;
unsigned long num3;
unsigned long long num4;
} EXAMPLESTRUCT;

void examplefunction(unsigned long *num, int num2)
{
*num += num2;
return;
}

int main(int nArgs, char **pszArgs)
{
EXAMPLESTRUCT ExStructInstance = {0xFF, 0xFFFF, 0xFFFFFFFF, 0xFFFFFFFFFFFFFFFF};
printf("%d, %d, %u, %ull\n", ExStructInstance.num1, ExStructInstance.num2, ExStructInstance.num3, ExStructInstance.num4);
unsigned long num5 = ExStructInstance.num1 + ExStructInstance.num2;
printf("%d\n", num5);
examplefunction(&num5, 10);
printf("%d\n", num5);
system("pause");
return 0;
}

(如果您想知道这到底是怎么回事,我正在反汇编创建的可执行文件以观察优化编译器的行为,并了解有关 x86 汇编的更多信息。)

在项目设置的链接器下,我为运行时库选择了多线程(/MT),所以它会静态链接它。

我用 F5 编译并开始调试,立即在消息框中收到此错误:

Runtime Error!

Program: C:\Users\xxxxx\Documents\P...

R6030

  • CRT not initialized

因此,由于运行时库的某些问题,这个基本程序将无法运行,我无法弄清楚!

有什么想法吗?我只想知道这里发生了什么。提前致谢!

编辑:仅供引用,这一切都是在 Release模式下完成的。

最佳答案

使用“空项目”模板开始一个新项目有招致麻烦的诀窍。您可能更改了另一个项目设置,导致您的程序从 main() 方法而不是正常的入口点 CRT 启动函数开始。它初始化 CRT,然后调用 main()。很难猜出你是怎么做到的,尤其是当你谈论更改链接器设置以获取/MT 时。这是一个编译器设置。

改为使用 Win32 + Win2 控制台应用程序项目模板,掉入成功的陷阱。删除预生成代码,减去 #include <stdafx.h> line在顶部。至少,您现在有了一个起点,可以帮助我们帮助您解决问题。并且不要跳过“Hello world”程序。

关于c++ - 这个 "CRT not initialized"错误是怎么回事?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12988258/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com