[英]sdl, sdl2 error: SDL_window (among others) not declared
我玩C++
已经有一段时间了,最近才开始接触SDL
和SDL2
。
我能够使点演示程序正常工作。
但是其他程序,例如Lazy Foo'Productions的复制和粘贴似乎不起作用。 我都SDL和SDL2安装我在Ubuntu 15.04和我有联系的IDE代码块((和卸载并重新安装。) -ISDL2
)的错误是SDL_Window
- SDL_WINDOWPOS_UNDEFINED
- SDL_WINDOW_SHOWN
- SDL_CreateWindow
- SDL_GetWindowSurface
- SDL_UpdateWindowSurface
最后, SDL_DestroyWindow
-在这方面没有申明。
另外,我包括:
#include </usr/include/SDL/SDL.h>
#include </usr/include/SDL2/SDL.h>
#include <stdio.h>
我敢肯定,我并不需要所有的位置,但是没有它也不起作用。 另一个注意事项是,当我键入#includes
,CodeBlocks将建议使用SDL2/SDL.h
而不是SDL/SDL.h
我想念什么?
我认为我不能在这里放下Lazy Foo'代码-我没有得到许可...
您列出的代码;
#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,因为该站点实际上具有两个版本的教程。
更新:
我没有注意到您的平台是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;
}
希望能有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.