2006年11月4日の日記の1番目の記事へのコメント
■Scrobblerの関数名とか
queue.cとかfmt.cとかちまちま整理してみました.前にあれ作ったときもはまったところですが,この辺,変に入り組んでてキモいっす.増改築を繰り替えした結果なんじゃろうか.queue.cは扱うデータの中身に関して一切関知しないようにして,scrobbler以外でも使えるようにしてみました.あと,fmt.cは整理したらデバッグ出力用の関数以外無くなっちゃいました(笑).これでようやく別システム用のプラグインが作りやすくなったかも.
で,次はシンボルを何とかしてみたいと思うところです.-cつけてコンパイルした時点では外から見えるけど,リンクして共有ライブラリにしたらその内の一部しか外から見えなくなるような都合のよいリンクはできんのかと.そう言えば前にuim関連でそういう話があったな・・・.libtoolの-export-symbols-regexか・・・.いやなブログでも--version-scriptを使う方法が紹介されていますね.でもどうもこれだと移植性に問題ありみたい?
じゃあこれを使わないとするとどうするのがいいのか・・・.uimがslib.cでやってるみたいに全部staticにしてメインのソースにincludeしてコンパイルする?Scrobblerみたいに小さいのならこれでいいですけど,規模が大きい場合はやっぱそんなことやってられないから非staticな関数は名前をよく考えてつけてぶつからなさそうなのにするのが無難なんすかね.
ちなみにプラグインみたいに複数同時に読み込まれるようなものって,最初に呼ばれる関数名が同じ名前だったりしますが(たとえばgaimだとgaim_init_pluginが多分そう),これらはロード時にg_module_symbolとかしてシンボルのアドレス確保しちゃうから後から読み込んだのに上書きされても困らんみたいですなぁ.ほんと基本的なことが全然わかってなくて情けないorz
2006年11月4日の日記の1番目の記事へのコメント
[コメントを書く]