https://www.jianshu.com/p/95884d1d04aa
需要引入cc依賴
Cargo.toml
[package]
name = "rust-call-c"
version = "0.1.0"
authors = ["ice <[email protected]>"]
build = "build.rs"
[dependencies]
libc = "0.2"
[build-dependencies]
cc = "1.0"
build.rs
extern crate cc;
fn main() {
cc::Build::new()
.file("src/double.c")
.compile("libdouble.a");
}
main.rs
extern crate libc;
extern {
fn double_input(input: libc::c_int) -> libc::c_int;
}
//TODO
fn main() {
let input = 4;
let output = unsafe { double_input(input) };
println!("{} * 2 = {}", input, output);
}
double.c
int double_input(int input) {
return input * 2;
}
具體例子在
https://github.com/iceqing/rust-call-c
這裏是一個比較完整的例子,有各種語言的示例代碼
https://github.com/iceqing/rust-ffi-examples
作者:iceqing
鏈接:https://www.jianshu.com/p/95884d1d04aa
來源:簡書
著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。