我尝试使用gcc动态链接Rust .so库和Linux中的C程序。仅使用dlopen
和dlclose
会导致错误,但我会使用以下代码获得分段错误:
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
编译,如果重要的话。
我知道它找到了符号,因为我在生锈库中使用了#[no_mangle]
而my_function
指针不为空
答案 0 :(得分:0)
我通过gdb
运行它,结果发现图书馆试图在调用程序中调用一个不存在的函数。