Ich versuche, eine Rust .so-Bibliothek dynamisch mit einem C-Programm in Linux mit gcc zu verknüpfen. Mit nur dlopen
und dlclose
führt zu keinem Fehler, aber ich erhalte einen Segmentation Fault mit dem folgenden Code:Wie man eine Rust-Bibliothek in C dynamisch lädt?
char * (*my_function)(char *);
char *my_input_string = "foo";
//...abbreviated code...
my_function = dlsym(handle, "my_function");
char *my_output_string = (*my_function)(my_input_string);
ich gcc -g foo.c -ldl -o foo
zu kompilieren bin mit, wenn es ankommt.
Ich weiß, dass es das Symbol ist zu finden, weil ich #[no_mangle]
in der Rost-Bibliothek verwendet und die my_function
Zeiger nicht null
Was ist die Signatur von Rust für 'my_function'? – malbarbo
@malbarbo Es ist 'pub extern 'C" fn meine_funktion (mein_Zeichen: * const c_char) -> * const c_char' –