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