Wie man einen C-String (char*) in einen Rust-String und zurück über FFI konvertiert?
Hallo zusammen! Ich schreibe ein kleines Programm in Rust, das eine C-Bibliothek über FFI verwendet. Ich bin auf ein Problem bei der Konvertierung von Strings zwischen C und Rust gestoßen.
Ich habe eine C-Funktion, die `char*` zurückgibt:
```c
// C code
char* get_greeting(void) {
return "Hello from C!";
}
```
Und eine andere C-Funktion, die `const char*` akzeptiert:
```c
void print_message(const char* msg);
```
Ich versuche, sie aus Rust aufzurufen:
```rust
extern "C" {
fn get_greeting() -> *const c_char;
fn print_message(msg: *const c_char);
}
fn main() {
unsafe {
// C-String empfangen
let c_str = get_greeting();
// Wie konvertiert man *const c_char in Rust String?
// Versuchen, einen Rust-String an C zu übergeben
let rust_string = String::from("Hello from Rust!");
// Wie konvertiert man String in *const c_char?
print_message(???);
}
}
```
Ich verstehe, dass C-Strings null-terminierte Byte-Sequenzen sind, während Ru
Noch keine Antworten.
Anmelden um eine Antwort zu hinterlassen
Blogs