c - 如何在可能已依赖于 SDL 的程序使用的库中初始化 SDL?

标签 c shared-libraries sdl

我想使用 SDL_net 作为一个供少数程序使用的帮助程序库。然而,其中一些程序本身可能已经在使用 SDL。如果我理解正确的话,这意味着我在初始化/释放我的库时不能盲目使用 SDL_InitSDL_Quit ,因为 SDL 实例在主程序和我的程序之间共享图书馆。

到目前为止我最好的想法是让程序传递一个参数来指示它是否已经在使用SDL,这将使程序负责首先调用SDL_Init。我想知道是否有更清洁的解决方案。 SDL_WasInit 看起来很有希望,但显然只允许检查初始化的子系统,而不允许检查 SDL 本身是否已初始化(这可以通过 SDL_Init(0) 完成)。

这是关于 SDL 1.2 的。

最佳答案

SDL_WasInit() 可用于检查特定子系统是否正在运行,通过类似 SDL_WasInit(SDL_INIT_VIDEO) != 0 的检查,但 SDL docs在 SDL_WasInit() 上还说,如果您传入 SDL_WasInit(SDL_INIT_EVERYTHING) != 0SDL_WasInit(0) != 0,这会让您知道是否存在以下任何一个: SDL的子系统正在运行。

关于c - 如何在可能已依赖于 SDL 的程序使用的库中初始化 SDL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10813574/

相关文章:

c - 需要在数组中找到最大、最小、平均数 - 没有声明大小

c - ptrace 在 64 位中不工作

c++ - SDL视频显示窗口 : how to attach a window close event callback

opengl - 当今 OpenGL 中 NPOT 纹理的状态

c - 如何使用 GPGPU 高效地执行加载和位操作?

clang 悬挂引用?

c++ - 如何在 Windows 上使用 eclipse/gdb 调试共享库?

c - 跨进程共享库

c++ - Linux中共享对象和普通库的区别

ruby - 存在一些lib来改变速度播放ogg歌曲吗?