2018年12月14日 GNU ldのwrap機能でC++メンバ関数をwrapする例 GNU ld には wrap という機能があります。これはリンク時に、未定義(Undefined)のシンボル foo を __wrap_foo として解決し、元のシンボルを __real_foo として解決するという機能です。これを利用すると、バイナリ提供のライブラリ関数を差し替えることが可能になります。 C での使用例はネット上にたくさん存在しますが、C++ の例がほとんど見つからなかったのでメモしておきます。 C でも C++ でも、リンカから見ればどちらもただのシンボル(文字列)なので、C++ でも wrap 機能は使用できるのですが、C++ の場合はシンボルが名前マングリングされる点が大きく異なります。 そのため、__wrap_ 関数を C++ で定義することはできないので、C 関数、または ex