SDL2头文件在render.h中无法识别的编译问题求助
解决render.h中找不到SDL2头文件的问题
我正在学习C语言游戏引擎开发,编译代码时遇到错误:'SDL2/SDL2.h' : No such file or directory,错误出在\mygame\engine-from-scratch\src\engine\render/render.h文件中。但main.c里的#include <SDL2/SDL.h>(注:原提问中写的SLD.h为笔误)可以正常识别。我的构建脚本build.bat内容如下:
set files=src\glad.c src\main.c src\engine\global.c src\engine\render\render.c src\engine\render_init.c set libs=..\lib\SDL2main.lib ..\lib\SDL2.lib ..\lib\freetype.lib CL /Zi /I ..\include %files% /link %libs% /OUT:mygame.exe
可能的原因及解决步骤
修正头文件引用的笔误
首先检查render.h中的#include语句:SDL2的标准头文件是SDL.h,而非SDL2.h。你main.c里的SLD.h明显是拼写错误,render.h里大概率也犯了同样的错误——把#include <SDL2/SDL2.h>改成#include <SDL2/SDL.h>即可。确认include目录的路径正确性
检查build.bat中/I ..\include指定的路径是否正确:- 确认你的
..\include目录下存在SDL2文件夹,且该文件夹内有SDL.h文件; - 如果
include目录实际在engine-from-scratch目录下(而非上级目录),则把/I ..\include改成/I include。
- 确认你的
确保在正确的工作目录执行构建脚本
..\include是相对路径,必须在build.bat所在的目录下运行脚本,否则相对路径会失效。比如如果build.bat在mygame/engine-from-scratch目录,就先进入该目录再执行build.bat。尝试用双引号引用头文件(备选方案)
如果上述方法无效,可以在render.h中用双引号指定相对路径,比如:#include "../../../../include/SDL2/SDL.h"但更推荐通过正确设置
/I参数来使用尖括号引用,这样代码更简洁且易于维护。
内容的提问来源于stack exchange,提问作者Chahalor
相关产品推荐
相关产品推荐

