我打算开始做一个游戏项目,但是当我尝试在VSCode中安装SDL2时,编译main.cpp时出现了一个问题:致命错误:标准开发语言2/标准开发语言h:无此文件或目录
我试着按照YouTube上的说明操作,但这个错误一直发生。我把"sdl2. dll"放到mainidocpp文件的同一目录下,这是我的"makefile"文件:
all:
g++ -I src/include -L src/lib -o main main.cpp -lmingw32 -lSDL2main -lSDL2
我的c_cpp_属性. json:
{
"configurations": [
{
"name": "Win32",
"includePath": [
"${workspaceFolder}/**",
"${workspaceFolder}/src/include"
],
"defines": [
"_DEBUG",
"UNICODE",
"_UNICODE"
],
"compilerPath": "C:/msys64/mingw64/bin/g++.exe",
"cStandard": "gnu17",
"cppStandard": "gnu++23",
"intelliSenseMode": "windows-gcc-x64"
}
],
"version": 4
}
所有这些文件都与main.cpp位于同一目录中
1条答案
按热度按时间qco9c6ql1#
当编译器在代码中找不到
#include
语句指定的头文件时,会导致此问题。在这种情况下,原因肯定是包含路径中 * 没有 * SDL 2/SDL. h文件。在c++中,要链接一个库,你必须告诉链接器在哪里可以找到一个已经编译好的库文件(在windows上,这是一个.dll或.lib文件),* 而且 * 你必须告诉编译器在哪里可以找到库头文件的位置,以便用你自己的代码编译。
这是因为编译器需要SDL头文件中包含的定义来确保您自己的代码得到正确编译,以便链接器以后能够将其与编译后的库链接起来。
根据你的问题你所做的
我将“SDL2.dll”放入main.cpp的同一目录
这使得链接器能够找到库,但是您还必须使编译器能够找到SDL头文件。
为此,您必须将SDL的include目录复制到您自己的include路径(在本例中,它似乎位于src/include/中)* 或 * 告诉编译器在哪里可以找到它,这可以使用-I标志来完成