0

オブジェクトファイルを含む静的ライブラリがあります。あるオブジェクトファイルで呼び出され、別のオブジェクトファイルで定義されている関数をラップしたいのですが、オプションを使用してCの関数呼び出しを上書きするgcc --wrapで提案された方法を使用しようとしています。

関数をオーバーライドしたいとしますgetnamei()。wrap.Cファイルを作成して定義__wrap__getnamei()し、それをコンパイルしてオブジェクトファイルを取得します。次に、--wrapオプションを使用して関数をオーバーライドできますが、で実際の関数を呼び出そうとすると__real__getnamei()、 wrap.C、「エラー:'__real__getnamei()はこのスコープで宣言されていません'」が表示されます。

MinGWを使用してWindows7で実行しています

4

1 に答える 1

0

wrap.Cで関数の宣言を追加する必要があることがわかりました。そうすれば、extern "C" __real__getnamei()すべてが正常に機能します。

于 2013-03-27T10:03:26.103 に答える