在VSCode中使用SDL 2编译时出现game.h: No such file or directory错误
SDL2编译错误:找不到game.h文件
问题详情
我正在学习SDL 2并在VSCode中使用它,文件结构如下:
[文件结构图片]
main.cpp中的代码:
#include <game.h> int main(int argc, char* argv[]){ int screenWidth = 1024; int screenHight = 600; Game game("Game", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, screenWidth, screenHight, SDL_WINDOW_SHOWN); while(game.gameState != GameState::EXIT){ SDL_Event evnt; SDL_PollEvent(&evnt); switch (evnt.type){ case SDL_QUIT: game.gameState = GameState::EXIT; break; default: break; } }; return 0; }
编译时出现错误:
fatal error: game.h: No such file or directory
解决方法
1. 修正头文件引用方式
用尖括号<game.h>时,编译器只会在系统默认头文件目录和指定的额外包含目录查找。如果game.h是你自己编写的本地文件,改用双引号"game.h",编译器会优先在当前源文件所在目录查找:
#include "game.h"
2. 匹配文件实际位置
检查game.h是否和main.cpp在同一目录,若不在,需在包含语句中添加相对路径。比如game.h在项目的include子目录下,写法应为:
#include "include/game.h"
3. 配置VSCode编译任务
如果使用tasks.json编译,需在编译参数中添加头文件所在目录路径。假设game.h在项目根目录的src文件夹下,修改tasks.json的args部分,添加-I${workspaceFolder}/src(-I为大写i,指定包含目录):
{ "version": "2.0.0", "tasks": [ { "label": "build SDL2 project", "type": "shell", "command": "g++", "args": [ "-g", "${file}", "-o", "${fileDirname}/${fileBasenameNoExtension}", "-I${workspaceFolder}/src", "-L${workspaceFolder}/lib", "-lSDL2" ], "group": { "kind": "build", "isDefault": true }, "problemMatcher": ["$gcc"] } ] }
4. 配置CMake(若使用CMake管理项目)
在CMakeLists.txt中添加头文件包含目录,替换为你实际的头文件路径:
include_directories(${PROJECT_SOURCE_DIR}/src)
内容的提问来源于stack exchange,提问作者Youssef-mic
相关产品推荐
相关产品推荐

