您列出的代码;
#include </usr/include/SDL/SDL.h>
#include </usr/include/SDL2/SDL.h>
#include <stdio.h>
你为什么不将其更改为
#include <SDL2/SDL.h>
#include <stdio.h>
为第一头就是SDL_CreateWindow
等SDL2函数声明?
此外,您不需要同时包含SDL和SDL2标头。事实上,这很可能是你问题的根源,因为你只需要包含你使用的版本。
如果您正在关注lazyfoo网站的教程,您可以检查您正在使用的教程是否从内容列表中使用SDL1.2或SDL2,因为该网站实际上有两个版本的教程。
UPDATE:
我没有注意到你的平台是Linux平台。那么解决你的问题就容易多了。您之前遵循的演示是使用SDL-1.2完成的,而gcc错误暗示您使用的是SDL-2.0,因此SDL_CreateWindow
和其他未定义的错误。您应该安装SDL-2.0库和SDL-2.0开发文件(这将为您提供必要的SDL-2.0头文件)。您可以将其引用到由您的平台发行版提供的SDL-2.0软件包。
至于编译方式,它与您通过一个小的更改(而不是gcc sdltest.o -lSDL -o sdltest
)所遵循的教程相同,您将发出gcc sdltest.o -lSDL2 -o sdltest
以指示您将代码与SDL2库链接。
编辑
一个简单的SDL程序来测试您的环境。您可以使用任何简单的文本编辑器(例如nano
或gedit
或其他编辑器)编辑该文件,然后运行上述编译命令以测试您的设置。
最简单的方法是复制代码,然后从终端发出cat > sdltest.cpp
并粘贴代码,然后按[ENTER]和[CTRL-C]结束它。然后你可以发出前面提到的编译命令,g++ sdltest.cpp -lSDL2 -o sdltest
。
代码;
#include <SDL2/SDL.h>
#include <stdio.h>
int main()
{
SDL_Window *p;
SDL_Renderer *w;
p = SDL_CreateWindow("Game",SDL_WINDOWPOS_UNDEFINED,
SDL_WINDOWPOS_UNDEFINED,800,640,SDL_WINDOW_SHOWN);
w = SDL_CreateRenderer(p, -1, 0);
SDL_RenderClear(w);
SDL_SetRenderDrawColor(w,255,0,0,255);
SDL_Rect Rect = {220,140,200,200};
SDL_RenderFillRect(w,&Rect);
SDL_RenderPresent(w);
SDL_Delay(3000);
SDL_DestroyRenderer(w);
SDL_DestroyWindow(p);
SDL_Quit();
return 0;
}
希望有所帮助。
您是否在'/ usr/include/SDL'和'/ usr/include/SDL2'中找到这些文件? – vmonteco
我现在在/ usr/include /中有SDL和SDL2的文件夹。 –