Avatar ·

如何通过FFI在C字符串(char*)和Rust String之间进行转换?

大家好!我正在用Rust编写一个小程序,通过FFI使用一个C库。我遇到了在C和Rust之间转换字符串的问题。 我有一个返回`char*`的C函数: ```c // C code char* get_greeting(void) { return "Hello from C!"; } ``` 另一个接受`const char*`的C函数: ```c void print_message(const char* msg); ``` 我尝试从Rust调用它们: ```rust extern "C" { fn get_greeting() -> *const c_char; fn print_message(msg: *const c_char); } fn main() { unsafe { // 获取C字符串 let c_str = get_greeting(); // 如何将*const c_char转换为Rust String? // 尝试将Rust字符串传递给C let rust_string = String::from("Hello from Rust!"); // 如何将String转换为*const c_char? print_message(???); } } ``` 我知道C字符串是以null结尾的字节序列,而Ru