gpt4 book ai didi

c++ - sdl、sdl2 错误 : SDL_window (among others) not declared

转载 作者:太空狗 更新时间:2023-10-29 11:36:17 29 4
gpt4 key购买 nike

我使用 C++ 有一段时间了,最​​近才开始接触 SDLSDL2

我能够得到 dot demo program去工作。

但是其他程序,比如Lazy Foo' Productions's复制和粘贴似乎不起作用。我同时安装了 SDL 和 SDL2(卸载并重新安装)。我在 Ubuntu 15.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

我错过了什么?

我不认为我可以把 Lazy Foo 的代码放在这里——我没有得到许可...

最佳答案

您列出的代码;

#include </usr/include/SDL/SDL.h>
#include </usr/include/SDL2/SDL.h>
#include <stdio.h>

你为什么不把它改成

#include <SDL2/SDL.h>
#include <stdio.h>

因为第一个 header 是声明 SDL_CreateWindow 和其他 SDL2 函数的地方吗?

此外,您不需要同时包含 SDL 和 SDL2 header 。事实上,这很可能是您问题的根源,因为您只需要包括您正在使用的版本。

如果您正在学习 lazyfoo 网站上的教程,您可以从其目录中检查您所关注的教程是否使用了 SDL1.2 或 SDL2,因为该网站实际上有这两个版本的教程。

更新:

我没注意到你的平台是Linux平台。那么解决你的问题就容易多了。您之前遵循的演示是使用 SDL-1.2 完成的,而 gcc 错误提示您使用的是 SDL-2.0,因此出现 SDL_CreateWindow 和其他未定义的错误。您应该安装 SDL-2.0 库和 SDL-2.0 开发文件(它们将为您提供必要的 SDL-2.0 header )。您可以引用您的平台发行版提供的 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;
}

希望对您有所帮助。

关于c++ - sdl、sdl2 错误 : SDL_window (among others) not declared,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35217417/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com