0

動的ライブラリから関数シンボルを取得しようとしていますが、新しい関数ポインターを使用して関数をライブラリ関数に置き換える必要があります。コードは c++ ファイルで記述されます。

次の手順を使用しました。

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

しかし、コンパイル時に、この「エラー: void 値は無視されないはずです」というエラーが発生します。

上記の状況を解決するにはどうすればよいですか?

ありがとう

4

1 に答える 1

1

ヨアヒムのコメントは正しいです。最初の問題は、実際にはキャストです。適切なキャストは real_mal = reinterpret_cast<void*(size_t)>(dlsym(<FLAGS>,<FUNC_NAME>));. 現在のキャストは、 の誤った宣言を隠していreal_malます。

それを修正したら、次のように書くことができますreturn real_mal(size);

于 2012-01-13T08:02:20.383 に答える