2012-01-13 17 views
0

私は動的ライブラリから関数シンボルを取得しようとしていますが、新しい関数ポインタを使用してライブラリ関数funcitonで関数を置き換える必要があります。 C++ファイル。エラー:void値が無視されないようにしてください

私は、

{ 
void *temp = dlsym(<FLAGS>,<FUNC_NAME>); 
*reinterpret_cast<void**>(&real_mal) = temp; 
void *p = NULL; 
p = real_mal(size); 
return p; 
} 

を、以下の手順を使用しかし、コンパイル時に私は、この「エラー:それはあるべきとして無視ではない空値」取得していますどのように私は状況の上解決することができ、エラー

を?

ありがとうございました

+0

「real_mal」の定義は何ですか?そして、どのラインでエラーが出ますか? –

+0

@ joachim - definationは静的void(* real_mal)(size_t size)= 0; – Mandar

+1

'void'戻り値の代わりに' void * 'を使うべきでしょうか?だから 'void *(* real_mal)(size_t)'? –

答えて

1

Joachimさんのコメントが正しいです。最初の問題は実際にあなたのキャストです。適切なキャストは real_mal = reinterpret_cast<void*(size_t)>(dlsym(<FLAGS>,<FUNC_NAME>));です。あなたの現在のキャストは、real_malの間違った宣言を隠しています。

これを修正したら、return real_mal(size);と書くことができます。

関連する問題