我在 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 汇编的更多信息。)
在项目设置中的链接器下,我选择Multi-threaded (/MT)
了运行时库,因此它会静态链接它。
我编译并开始使用 F5 进行调试,并立即在消息框中收到此错误:
运行时错误!
程序:C:\Users\xxxxx\Documents\P...
R6030
- CRT 未初始化
因此,由于运行时库的一些问题,这个基本程序将无法运行,我无法弄清楚!
有任何想法吗?我只是想知道这里发生了什么。提前致谢!
编辑:仅供参考,这都是在发布模式下完成的。