2016-07-01 30 views
1

私はgccを使ってLinuxのCプログラムでRust .soライブラリを動的にリンクしようとしています。エラーなしで唯一のdlopendlclose結果を使用して、私は次のコードでセグメンテーションフォールトを取得:CでRustライブラリを動的に読み込む方法は?

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

'my_function'のRust署名とは何ですか? – malbarbo

+0

@malbarbo 'pub extern" C "fn my_function(my_string:* const c_char) - > * const c_char'です。 –

答えて

0

nullでない私はgdbを通してそれを実行し、それはライブラリは、呼び出し元の関数を呼び出すようにしようとしていたが判明したので、それはシンボルを見つけることだということを知っていますプログラムは存在しませんでした。

関連する問題