kkamegawa's weblog

Visual Studio,TFS,ALM,VSTS,DevOps関係のことについていろいろと書いていきます。Google Analyticsで解析を行っています

ライブラリの循環参照

Windowsのバイナリに限定したネイティブコードのお話ですが…。

  • ソースコードをコンパイルするとobjというファイルができる
  • 開発環境に含まれているライブラリ類とリンクしてexe(もしくはdll)ができる

という流れは比較的すぐに理解してもらえます。ところが、自分がライブラリ提供側になると、ちょっと気をつける必要があります。言葉よりも図で。

こんなんやらないよーと思うでしょう?でもちゃんと気をつけてライブラリ構成しないとこうなります。私の知っているところでもやった人が多くいます。始末が悪いのは、これ手作りでフレームワークのライブラリ作っていくときには逐次ビルドしていくので、経験の少ない人はなかなか気付かない。ところが、フルビルドをおこなうときになって「そんなシンボルないよー」と言われて蒼い顔するわけです。
もう一つ気をつけたいのは「そのライブラリをどこに配置するか」ということ。なんでもかんでもリンクしていると、結局クライアントにしか必要ではないライブラリをサーバー側に入れざるを得なくなります。ものによっては難しいですけどね。