Ubuntu的SDL2.0.2安装中丢失的对象
Missing objects in SDL2.0.2 installation for Ubuntu
我在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
相关文章:
- 什么时候调用组成单元对象的析构函数
- 对RValue对象调用的LValue ref限定成员函数
- CMake-按正确顺序将项目与C运行时对象文件链接
- 空基优化子对象的地址
- 将对象数组的引用传递给函数
- 你能重载对象变量名本身返回的内容吗
- C++使用整数的压缩数组初始化对象
- 找不到成员对象:没有名为get_event()的成员,也处理多态性和向量
- 将对象移动到std::shared_ptr
- 代理对象的常量正确性
- 提升 ASIO 无法识别计时器对象
- 将Ref对象作为类成员
- 将包含C样式数组的对象初始化为成员变量(C++)
- 如何返回一个类的两个对象相加的结果
- 使用std::函数映射对象方法
- 是否需要删除包含对象的"pair"?
- 如何在自删除后将对象设置为nullptr
- (SDL2) 让对象自身呈现会得到黑屏
- SDL2 无法创建窗口,因为它找不到匹配的 GLX 视觉对象
- Ubuntu的SDL2.0.2安装中丢失的对象