如何在 C 中动态加载 Rust 库?

How to dynamically load a Rust library in C?

我正在尝试使用 gcc 在 Linux 中使用 C 程序动态 link 一个 Rust .so 库。仅使用 dlopendlclose 不会导致错误,但我使用以下代码遇到分段错误:

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);

如果重要的话,我正在使用 gcc -g foo.c -ldl -o foo 进行编译。

我知道它正在寻找符号,因为我在 rust 库中使用了 #[no_mangle] 并且 my_function 指针不为空

我 运行 通过 gdb 结果发现库试图调用调用程序中不存在的函数。