1 个不稳定版本

0.36.0 2024 年 7 月 24 日

#1127WebAssembly

Download history 90/week @ 2024-07-20 20/week @ 2024-07-27

110 每月下载量

MIT/Apache

2.5MB
53K SLoC

Wasmi C-API

C 项目中的使用

如果您有一个想使用 Wasmi 的 C 项目,您可以通过 Wasmi 的 C API 进行接口交互

先决条件

从 Wasmi 仓库的根目录,运行以下命令

cmake -S crates/c_api -B target/c_api --install-prefix "$(pwd)/artifacts" &&
cmake --build target/c_api --target install

这些命令将生成以下文件

  • artifacts/lib/libwasmi.{a,lib}:静态 Wasmi 库。
  • artifacts/lib/libwasmi.}:动态(或共享)Wasmi 库。
  • artifacts/include/**.h:从 C 或 C++ 交互 Wasmi 的头文件。

Rust 项目中的使用

如果您有一个使用 C 或 C++ 库的 Rust 包,该库使用 Wasmi,您可以通过以下方式链接到 Wasmi C API

  1. wasmi_c_api_impl 包添加到您的 Cargo.toml 依赖项中。注意,包名与库名不同。
[dependencies]
wasmi_c_api = { version = "0.35.0", package = "wasmi_c_api_impl" }
  1. 在您的 build.rs 文件中,当编译您的 C/C++ 源代码时,将 C wasmi_c_api 头文件添加到包含路径
fn main() {
    let mut cfg = cc::Build::new();
    // Add the Wasmi and standard Wasm C-API headers to the include path.
    cfg
        .include(std::env::var("DEP_WASMI_C_API_INCLUDE").unwrap());
        .include(std::env::var("DEP_WASMI_C_API_WASM_INCLUDE").unwrap());
    // Compile your C code.
    cfg
        .file("src/your_c_code.c")
        .compile("your_library");
}

依赖项

~4MB
~74K SLoC