6 个版本
使用旧的 Rust 2015
0.3.0 | 2016年3月18日 |
---|---|
0.2.0 | 2016年2月18日 |
0.1.3 | 2016年2月18日 |
#175 在 #load
18KB
199 行
Snek
Snek 是一个简单的 Rust 库,用于定义接口并加载动态库。
目前不稳定,不建议您将其用于生产代码。
现在支持 Windows!
有关更多信息,请查看此处的文档或通过 cargo doc
待办事项
- 适当的错误处理
- 更多?
lib.rs
:
此库提供了一个方便的接口,用于在运行时加载动态库并从中检索符号。推荐使用 snek!
宏,它定义了一个结构,在构造时加载符号并具有针对每个符号的方法,但是也可以使用 Snek
实例手动加载库和符号。
安全性
无法验证加载的符号的类型,因此使用这两种方法都假设给定的类型是正确的 - 应非常小心地使用此库。请考虑目前所有内容都非常不稳定。
示例
#[macro_use] extern crate snek;
extern crate libc;
use libc::c_int;
snek! {
Example {
hello: () -> (),
add: (x: c_int, y: c_int) -> c_int
}
}
fn main() {
if let Ok(example) = Example::load("libexample.so") {
unsafe { example.hello() };
println!("2 + 4 = {}", unsafe { example.add(2, 4) });
}
}
依赖项
~115KB