7 个版本
| 0.3.0 | 2024 年 2 月 16 日 |
|---|---|
| 0.1.5 | 2022 年 8 月 9 日 |
#285 in 模拟器
每月 38 次下载
280KB
5K SLoC
chd-capi
⚠️C API 尚未经过大量测试。使用时请自行承担风险。 ⚠️
chd-rs 提供了一个与 chd.h 兼容的 C API。以下是 ABI 兼容性的详细信息,但作为动态库编译时未经过测试。此包的预期使用方式不是通过 cargo,而是通过将 C API 的源码和适用于您平台的兼容 libchdcorefile 实现作为树的一部分进行 vendoring。
功能
verify_block_crc
启用 chd 包中的 verify_block_crc,以验证使用其内部散列的解压缩 CHD 块。
chd_core_file
启用 core_file 和 chd_open_file,以及 chd_core_file API。此功能需要一个 libchdcorefile 实现或默认的 POSIX 兼容实现(其中 core_file 是 FILE 流)。
请注意,默认情况下,core_file 不是一个不可见指针,它是一个 C FILE 流。这允许在不违反 chd-rs 的内存安全保证的情况下更改底层文件指针。我们强烈建议使用 chd_open 而不是 chd_open_file。
如果您需要 core_file 支持,chd-capi 应该启用 chd_core_file 功能,这将使用 libchdcorefile 中的轻量级包装器将 FILE 包装起来以在 Rust 中使用。如果默认实现不适合,您可能需要自己实现 libchdcorefile。需要 CMake 和 Clang 来使用 chd_core_file 功能。
chd_virtio
启用虚拟I/O功能,函数chd_open_core_file。由于此C API要求core_file是一个不透明指针,因此与libchdr不同,chd_open_file和chd_open_core_file之间没有区别,并且chd_open_core_file是chd_open_file的别名。所有接受core_file*的函数都需要libchdcorefile实现。
chd_precache
通过chd_precache_progress和chd_precache函数启用对底层文件的预加载到内存中。
ABI兼容性
与libchdr相比,当静态编译时,chd-rs提供了以下ABI兼容性保证。
依赖项
~1.7–3.5MB
~64K SLoC