当.exes在Windows 7 32位上运行时,使用GCC编译的C程序导致NVTDM错误

时间:2015-10-21 08:00:12

标签: c windows gcc windows-7

我试图在通过Cygwin安装的32位Windows 7机器上运行GCC / G ++。我可以编译和链接我的基本“Hello World”程序就好了,但是当我尝试运行它时,我得到一个“NVTDM.EXE已经停止工作”错误。

我一直在谷歌搜索最后一个小时左右,我所能找到的是一堆参考NTVDM应该运行旧的16位遗留代码的事实,显然Windows XP补丁打破了它。

我尝试使用-m32编译器标签强制使用32位代码进行编译,并使用32位GCC / MinGW可执行文件进行编译,而64位只是出于好奇,我每次都得到相同的NVTDM错误时间。关于出了什么问题的任何想法?

源代码:

#include <stdio.h>
int main(void)
{
  printf("Hello World!\n");

  return 0;
}

使用的基本GCC编译行:

gcc -Wall -c HelloWorld.c -o HelloWorld.exe

错误详情:

Problem signature:
Problem Event Name: APPCRASH
Application Name: ntvdm.exe
Application Version: 6.1.7600.16385
Application Timestamp: 4a5bc158
Fault Module Name: StackHash_2264
Fault Module Version: 0.0.0.0
Fault Module Timestamp: 00000000
Exception Code: c0000005
Exception Offset: 00000229
OS Version: 6.1.7601.2.1.0.256.1
Locale ID: 1033
Additional Information 1: 2264
Additional Information 2: 2264db07e74365624c50317d7b856ae9
Additional Information 3: 875f
Additional Information 4: 875fa2ef9d2bdca96466e8af55d1ae6e

1 个答案:

答案 0 :(得分:1)

如果您通过Cygwin安装了GCC并将其称为wrap_content,那么您不会编译MinGW /本机可执行文件,而是编译Cygwin可执行文件。如果您需要非Cygwin可执行文件,则需要安装并调用gcc

运行时崩溃似乎很神秘,但可能是由于缺少Cygwin DLL(当然这是Cygwin应用程序所必需的。但这不是你想要的,所以试试上面的内容。