繁体   English   中英

sdl,sdl2错误:未声明SDL_window(以及其他)

[英]sdl, sdl2 error: SDL_window (among others) not declared

我玩C++已经有一段时间了,最​​近才开始接触SDLSDL2

我能够使点演示程序正常工作。

但是其他程序,例如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程序来测试您的环境。 您可以使用任何较简单的文本编辑器(例如nanogedit或其他编辑器)进行编辑,然后运行上面的编译命令来测试您的设置。

最简单的方法是复制代码,然后从终端中发出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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM