helloworld
如果你只想在C语言中调用一个简单的Rust编写的"Hello, World!"函数,可以按照以下步骤进行:
- 在Rust中创建一个动态链接库(
.so
文件)并添加一个"Hello, World!"函数。
在Rust中的代码(mylib.rs
):
// 导入必要的库
use std::os::raw::c_char;
use std::ffi::CString;
// 声明Rust函数的C语言接口
#[no_mangle]
pub extern "C" fn hello_world() -> *mut c_char {
let message = CString::new("Hello, World!").unwrap();
message.into_raw()
}
- 在C语言中调用Rust库中的"Hello, World!"函数。
在C语言中的代码(main.c):
#include <stdio.h>
#include <stdlib.h>
// 包含Rust库的头文件
extern char* hello_world();
int main() {
char* message = hello_world();
printf("%s\n", message);
// 释放分配的内存
free(message);
return 0;
}
- 编译Rust库:
rustc --crate-type cdylib mylib.rs
- 编译C代码并链接Rust库:
gcc -o main main.c -L. -lmylib -lpthread -ldl -lm
在这里,-L.
指定Rust库所在的当前目录,-lmylib
指定要链接的库名为 libmylib.so
。
然后运行可执行文件 ./main
,就能看到输出 "Hello, World!"。
这只是一个简单示例,实际情况中可能需要处理更多的细节。