sdl2 和 sdl2_sys 有什么区别?

问题描述 投票:0回答:1

据我所知,sdl2_sys是一个为所有SDL2自动生成的绑定的箱子,而sdl2是一个基于sdl2_sys的绑定的箱子,它缺少某些函数的等效项,特别是

IMG_LoadSVG_RW

我看到一些消息来源说 sdl2 是 SDL2 的安全包装器(这里),但我还没有看到有人对 sdl2_sys 说同样的话。 当使用

sdl2_sys
中的函数时,我必须写很多 unsafe,我不喜欢这样,因为这意味着不再保证我写的内容是安全的。 sdl2_sys 的另一个问题是函数有时会返回 c 类型(到目前为止我只需要处理 *c_char 但我确信还有更多),这很难转换回来。 最后,到目前为止我找到的每个教程都是针对 sdl2 的,所以找出到底如何做某事总是比较困难。

我需要使用

IMG_LoadSVG_RW
,所以很明显我必须以某种方式使用sdl2_sys,但我想知道在我无法使用sdl2的地方只使用sdl2_sys是否更好并处理导致的问题,或者使用 sdl2_sys 来处理所有事情,但体验会明显更差。

rust sdl-2 rust-cargo
1个回答
1
投票

一般来说,

*_sys
板条箱包含(通常自动生成)与相关库的 C API 的一对一绑定、一些链接到库的 Rust 设置,仅此而已。主要的非
sys
板条箱为库提供了内存安全且符合人体工程学的界面,使用
sys
板条箱中的绑定编写。

通常不建议直接使用

sys
板条箱 - 您也可以只编写 C。然而,非
sys
板条箱中的安全绑定是由第三方编写的,他们可能无法安全地绑定每一个位库中的功能,因此它们可能缺乏。

© www.soinside.com 2019 - 2024. All rights reserved.