1

对于SDL_GetVersionSDL2 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那个包里面的文件)。

问题:

  1. 引用中的“动态链接到 SDL”是什么意思?
  2. 如何指导我的应用程序使用 pip3 安装的 PySDL2 包而不是 debian 包?
4

0 回答 0