c和rust相互调用完整代码示例
时间: 2023-08-03 20:15:22 浏览: 231
Rust语言和C语言的相互调用
5星 · 资源好评率100%
下面是一个简单的例子,演示了如何在C和Rust之间进行相互调用:
### Rust代码
```rust
// lib.rs
#[no_mangle]
pub extern "C" fn add_numbers(x: i32, y: i32) -> i32 {
x + y
}
```
### C代码
```c
// main.c
#include <stdio.h>
extern int add_numbers(int x, int y);
int main() {
int result = add_numbers(2, 3);
printf("The result is: %d\n", result);
return 0;
}
```
在这个例子中,我们定义了一个Rust函数 `add_numbers`,它接受两个整数并返回它们的和。我们使用 `#[no_mangle]` 属性来防止Rust编译器对函数名称进行重命名。
在C代码中,我们使用 `extern` 关键字来声明我们要调用的函数。这告诉编译器该函数在其他地方定义,并且不需要在当前文件中编译它。我们将 `add_numbers` 函数声明为返回整数,并将其参数类型与Rust函数的参数类型匹配。
最后,我们在 `main` 函数中调用 `add_numbers`,并将结果打印到控制台。
请注意,您需要正确配置Rust和C编译器以使其工作。这里没有包括任何编译器选项或构建脚本。
阅读全文