failureシリーズも最終回。ライブラリ関数のエントリアドレスの取得など初期化処理が必要になります。一般のアプリケーションであれば、処理の前後で初期化・終了処理を行うことは簡単ですが、共有オブジェクトで実現するとなると、はてと悩んでしまいます。実は、GCCにはこのような場合のために、特別な仕掛けが用意されているのです。関数のふたつが加えられています。いずれも簡単なメッセージを表示するだけのものですが、3・4行のプロトタイプ宣言に注目してください。関数をコンストラクターとして宣言しています。このコンストラクターはC++の概念とはことなり、該当モジュールがロードされた際に、初期化関数として自動実行されることを意味しています。関数をデストラクターとして宣言しています。関数が自動的に実行されるようになります。併せて実験してみましょう。共有オブジェトを作成します。world!前回通り、正常に動作しています。Linuxだけでなく、*BSDでも動作します)。このテクニックは、共有ライブラリを作成する際によく使われますが、考えれば考えるほど不思議なコードの動きです。下準備は以上で整いましたので、いよいよ動的リンクによるアドレス取得に挑戦してみましょう。静的リンクとはことなり、動的リンクでは外部参照シンボルのアドレスは、プロセス起動時まで決まっていません。SYMbol)関数が用意されています。定義)を指定し、第二引数にシンボル名を指定すると、目的のシンボルアドレスが返されます。マクロを指定する点がミソですが、具体的なコードで説明した方が理解が早いかと思います。