Ubuntu的SDL2.0.2安装中丢失的对象

Missing objects in SDL2.0.2 installation for Ubuntu

本文关键字:对象 SDL2 Ubuntu 安装      更新时间:2023-10-16

我在Ubuntu中安装了SDL2,但是我一直无法让它附带的示例程序工作。以下是出现的错误。

|In function ‘int main(int, char**)’:|
‘SDL_HWSURFACE’ was not declared in this scope|
‘SDL_DOUBLEBUF’ was not declared in this scope|
‘SDL_SetVideoMode’ was not declared in this scope|
‘SDL_Flip’ was not declared in this scope|
||=== Build finished: 4 errors, 0 warnings ===|

这是我的标题(我添加了SDL_image以防有一些问题,但它没有改变任何东西)。

#ifdef __cplusplus
    #include <cstdlib>
#else
    #include <stdlib.h>
#endif
#ifdef __APPLE__
#include <SDL/SDL.h>
#else
#include <SDL.h>
#endif
#ifdef _SDL_imageH
#include <SDL_image.h>
#endif

以下是我在链接器设置中包含的库:

libSDL2.a
libSDL2main.a
libSDL2_image.a
libz.a

我连续地添加了这些库,但它们似乎都不能帮助我的程序运行。下面是其他链接器选项:

-lmingw32
-lSDL2main
-lSDL2
-mwindows
-lm
-ldinput8
-ldxguid
-ldxerr8
-luser32
-lgdi32
-lwinmm
-limm32
-lole32
-loleaut32
-lshell32 -lversion -luuid -static-libgcc

我还在编译器搜索目录中包含了/usr/local/include/SDL2 .

我也尝试了-lmingw64,因为我有一个64位编译器,虽然我不知道这个选项是否适用于我,但我怀疑我的编译器可能是问题所在。

另一个问题是,当我运行grep -r SDL_HWSURFACE /usr/时,目录(或我搜索过的其他目录)中的文件都没有该文本,而不是用于生成测试样本的main.cpp文件。

前两个错误的位置在这一行

SDL_Surface* screen = SDL_SetVideoMode(640, 480, 16,
                                       SDL_HWSURFACE|SDL_DOUBLEBUF);

虽然我不认为这是非常相关的。

SDL_SetVideoMode以及其他许多东西属于SDL 1.2,在SDL2中不再存在。请阅读https://wiki.libsdl.org/MigrationGuide