1 个不稳定版本
使用旧Rust 2015
0.0.1 | 2015年9月11日 |
---|
#40 in #calling
45KB
1K SLoC
ffigen
自动生成用于从其他语言调用Rust的FFI绑定。
注意,这个库目前还在开发中,尚未准备好用于生产环境。
概述
这个库允许自动生成调用Rust所需的C FFI桩代码。使用代码生成和与build.rs的集成,您可以确保所有函数签名正确,并且值被正确地打包。
使用
任何标记为
#[no_mangle]
pub extern ...
的Rust函数都将导出为对应语言的桩代码。注意,如果您使用String、&String或&str,您需要在lib.rs/main.rs中包含"ffigen"模块。这是为了适当的字符串打包代码。
以下是build.rs的模板,当调用"cargo build"时将自动生成代码
extern crate ffigen;
fn main() {
let mut context = ffigen::Context::new();
context.add_lang(ffigen::Lang::Cpp, &[ffigen::Config::Output("path_to_cpp_source".to_string())]);
ffigen::gen(&context);
}
将以下行添加到Cargo.toml中,将调用构建脚本
[package]
...
build="build.rs"
有关所有语言和配置选项,请参阅lib.rs。
后续将提供更详细的入门指南。
支持的语言
目前支持以下语言
- C#
- C++ (仅在win32上动态支持)
未来还将支持其他语言。
不支持的数据类型
当前FFI不会导出以下参数/返回类型
- 结构体
- 枚举
- 数组
- 指针
依赖项
~4.5MB
~95K SLoC