我有一个Rust静态库,它正在链接到一个C项目中。大部分情况下它运行良好。但是我无法弄清如何将一个C char*数组传递给Rust,并使其转换为Rust Vec。
我的C代码:
int rust_main(int argc, char** argv);
int main(int argc, char **argv)
{
rust_main(argc, argv);
return 0;
}
我的 Rust 代码:
#[no_mangle]
pub unsafe extern "C" fn rust_main(argc : c_int , argv : &[*mut c_char]) -> c_int {
let arglen = argc as usize;
println!("Args: {}", argc);
for x in 0..arglen {
let var = CString::from_raw(argv[x]);
let printable = var.to_string_lossy();
println!("{}", x);
}
}
代码编译正常,但是当我尝试访问字符串指针数组时, 发生了核心转储(Core Dump)。
如果有人能指导我正确的方向,我将不胜感激。
argv
让我感到困扰,因为&[_]
是一个 fat 指针。难道不应该是*mut *mut c_char
吗? - trent