我正在寻找通过函数调用 [function] 进行的 C 调用。我正在通过 ld 在一个二进制文件中链接 asm 和 Rust。
最佳答案
如果您知道如何从汇编调用 C 函数(我不知道,随便),那么这将帮助您获得可以像 C 函数一样调用的 Rust 函数:
// foo.rs
#[no_mangle]
pub extern fn increment(a: i32) -> i32 {
a + 1
}
将其编译为动态或静态库:
$ rustc --crate-type dylib foo.rs
$ nm libfoo.dylib | grep increment
0000000000000c70 t __ZN9increment10__rust_abiE
0000000000000c30 T _increment
现在您有了一个可以像 C 库一样调用的库。您应该阅读整个 FFI Guide更好地理解从 Rust 外部调用 Rust 的权衡和陷阱。
关于function - 如何从程序集中调用 Rust 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27660151/