假设我有以下 Rust 库:
我知道,要从C中调用
// lib.rs
#![crate_type = staticlib]
#[no_mangle]
pub extern fn do_something(number: i32) {
// something
}
#[no_mangle]
pub extern fn do_something_else(collection: &Vec<i32>) {
// something
}
我知道,要从C中调用
do_something
,只需要声明一个接受int32_t
参数的extern
函数,但是是否可以调用do_something_else
呢?如果可以,怎么做呢?
pub extern fn do_thing(slice: &[i32])
然后在 C 端声明为void do_thing(int32_t slice[])
? - Romáriopub extern fn do_thing(slice: *[i32])
,然后在C端声明它:void do_thing(int32_t* slice[])
。在这里,你使用了原始指针,因此必须声明一个不安全块。 - noshusan