Rust 语言如何调用 C 编写的 lib(.so)
如何在Rust中调用由C语言编写并构建的动态链接库。我们将使用一个稍微复杂一些的示例,以便更好地理解整个过程。
- 创建和编译C库:
在同一个目录下,创建一个名为 mylib.c
的C文件,包含以下代码:
// mylib.c
#include <stdio.h>
int add(int a, int b) {
return a + b;
}
然后编译这个C文件为 .so
文件:
gcc -shared -o libmylib.so -fPIC mylib.c
- 在Rust中使用C库:
在同一个目录下,创建一个名为 main.rs
的Rust文件,包含以下代码:
extern {
fn add(a: i32, b: i32) -> i32;
}
fn main() {
unsafe {
let result = add(3, 5);
println!("Result: {}", result);
}
}
- 编译Rust程序并链接C库:
使用以下命令编译Rust程序并链接C库:
rustc main.rs -o my_program -L. -lmylib
确保库文件 libmylib.so
和编译出的 my_program
位于同一目录下。
- 运行程序:
运行可执行程序 ./my_program
,你应该会看到输出结果 Result: 8
,这是因为Rust程序成功调用了C库中的 add
函数。
如果你按照这个例子进行操作,并且遵循了正确的编译步骤,应该能够成功运行。如果仍然遇到问题,请确保没有遗漏步骤,库文件名和路径都是正确的,并且函数的声明和使用在C和Rust之间匹配。