我和C++玩了一段时间,最近才开始进入SDL和SDL2。
我能让点演示程序开始工作。
但是其他程序,如复制和粘贴的懒汉的制作似乎不起作用。我已经安装了SDL和SDL2 (以及卸载和重新安装)。我在Ubuntu15.04上,我有IDE CodeBlocks链接(-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。
我遗漏了什么?
我不认为我能把懒散的密码放在这里-我没有得到许可.
发布于 2016-02-05 06:48:02
你列出的代码;
#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结束它。然后,您可以发出前面提到的编译命令,g++ sdltest.cpp -lSDL2 -o sdltest。
(B)编码;
#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;
}希望这能有所帮助。
https://stackoverflow.com/questions/35217417
复制相似问题