我试图在通过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
答案 0 :(得分:1)
如果您通过Cygwin安装了GCC并将其称为wrap_content
,那么您不会编译MinGW /本机可执行文件,而是编译Cygwin可执行文件。如果您需要非Cygwin可执行文件,则需要安装并调用gcc
。
运行时崩溃似乎很神秘,但可能是由于缺少Cygwin DLL(当然这是Cygwin应用程序所必需的。但这不是你想要的,所以试试上面的内容。