使用MinGW编译C代码时出现致命错误:sdkddkver.h 文件不存在该如何解决?
sdkddkver.h缺失的错误 问题背景
刚安装完成MinGW后,编写了以下C代码:
#include<stdio.h> int main() { printf("Hello, world!"); return 0; }
编译时出现如下错误:
In file included from c:\mingw\include_mingw.h:73:0,
from c:\mingw\include\stdio.h:56,
from main.c:1:
c:\mingw\include\w32api.h:59:23: fatal error: sdkddkver.h: No such file or directory
#include <sdkddkver.h>
^
compilation terminated.
解决方案
别慌,这是MinGW环境里常见的Windows SDK头文件缺失问题,试试下面几种方法:
更新/安装w32api组件:打开MinGW的包管理器(mingw-get),找到
mingw32-w32api-dev这个包,勾选它并执行安装或更新操作。这个组件包含了编译Windows程序必需的核心头文件和库,sdkddkver.h就包含在其中,安装完成后应该就能正常编译了。手动补充头文件:如果包管理器的方法行不通,可以手动处理——找一个完整的
sdkddkver.h文件(比如从其他完整的Windows SDK环境中复制,或者创建一个空的文件),把它放到MinGW的include目录下(也就是你的c:\mingw\include路径)。不过这种方法可能会带来后续兼容性问题,优先推荐第一种方法。切换到MinGW-w64:如果你用的是旧版MinGW,建议直接升级到MinGW-w64。它是MinGW的增强版,自带了更完整的Windows SDK支持,能从根源上避免这类头文件缺失的问题,同时还支持64位程序编译,功能更全面。
另外,编译时记得用正确的命令:gcc main.c -o main,生成可执行文件后就能正常运行啦。
内容的提问来源于stack exchange,提问作者Bhavik Khawale

