#generate #automatic #wrapper #function #wrap #int #pointers

bin+lib wrapgen

一个用于自动生成围绕 FFI 函数的安全包装器的工具

3 个不稳定版本

0.2.0 2020年10月11日
0.1.1 2020年7月12日
0.1.0 2020年7月10日

Rust 模式 中排名 2993

MIT 许可证

18KB
393

wrapgen

Crates.io Crates.io

wrapgen 是一个工具,可以自动生成通过 FFI 调用的 C 函数的 Rust 包装器。它将指针返回值包裹在 Option 中,并将 int 返回值包裹在 Result 中。目前,wrapgen 仅在您的函数遵循返回 0 表示成功运行,否则返回其他值的 C 约定时才工作。

如何使用 wrapgen

您可以将 wrapgen 作为独立的二进制文件使用

wrapgen 输入.rs 输出.rs

其中 input.rs 每行包含一个函数声明

或将其包含在您的 build.rs 文件中

fn main() {
    WrapGen::new("input1.rs")
        .add_file("input2.rs")
        .function("fn my_test_fn(arg1: cty::c_int) -> cty::c_int")
        .prefix("rs_")
        .use_core(false)
        .generate("output.rs");
}

lib.rs:

wrapgen 是一个工具,可以自动生成通过 FFI 调用的 C 函数的 Rust 包装器。它将指针返回值包裹在 Option 中,并将 int 返回值包裹在 Result 中。目前,wrapgen 仅在您的函数遵循返回 0 表示成功运行,否则返回其他值的 C 约定时才工作。

如何使用 wrapgen

您可以将 wrapgen 作为独立的二进制文件使用

wrapgen 输入.rs 输出.rs

其中 input.rs 每行包含一个函数声明

或将其包含在您的 build.rs 文件中

fn main() {
   WrapGen::new("input1.rs")
       .add_file("input2.rs")
       .function("fn my_test_fn(arg1: cty::c_int) -> cty::c_int")
       .prefix("rs_")
       .use_core(false)
       .generate("output.rs");
}

依赖关系

~2.2–3MB
~54K SLoC