对于SDL_GetVersion
,SDL2 Wiki声明:
如果您动态链接到 SDL,那么当前版本可能与您编译时所针对的版本不同。此函数返回当前版本,而 SDL_VERSION() 是一个宏,它告诉您编译时使用的版本。
下面是我的 python 脚本,用于检查我的 SDL2 编译和链接版本。我发现它们是不同的。
import sdl2
compiled = sdl2.SDL_version() #initialisation
linked = sdl2.SDL_version() #initialisation
sdl2.SDL_VERSION(compiled) #updated
sdl2.SDL_GetVersion(linked) #updated
print('compiled_version = ', compiled.major, compiled.minor, compiled.patch)
print('linked_version = ', linked.major, linked.minor, linked.patch)
结果:
compiled_version = 2 0 6
linked_version = 2 0 4
在我的系统上,我安装了以下 SDL2 包:
$ sudo dpkg -l | grep sdl2
ii libsdl2-2.0-0:amd64 2.0.4+dfsg1-2ubuntu2 amd64 Simple DirectMedia Layer
ii libsdl2-image-2.0-0:amd64 2.0.1+dfsg-2+deb9u1build0.16.04.1 amd64 Image loading library for Simple DirectMedia Layer 2, libraries
ii libsdl2-ttf-2.0-0:amd64 2.0.14+dfsg1-1 amd64 TrueType Font library for Simple DirectMedia Layer 2, libraries
$ pip3 list | grep PySDL2
PySDL2 0.9.6
从上面我了解到libsdl2-2.0-0:amd64
是链接包,PySDL2 0.9.6
通过pip3本地安装的包是编译包(我查过version.py
那个包里面的文件)。
问题:
- 引用中的“动态链接到 SDL”是什么意思?
- 如何指导我的应用程序使用 pip3 安装的 PySDL2 包而不是 debian 包?