VisualStudio2010において、依存関係の取り扱いが2008以前と異なる
(今回は、SP1で確認してます)
たとえば、プロジェクト内にAスタティックライブラリーとBアプリケーション(EXE,DLLなど)
のサブプロジェクト登録して、BアプリケーションにAスタティックライブラリをリンクする場合、
2008までは、プロジェクト依存関係を定義するだけで、Bアプリケーションは、Aスタティックライブラリ
を自動的にリンクできたが、2010からはこれでは、リンクされない。
Bアプリケーションで、Aスタティックライブラリを自動リンクさせる場合、Bアプリケーションのプロパティを
を開き、共通プロパティより、「新しい参照の追加」で、Aスタティックライブラリのサブプロジェクトを追加する
必要がある。
ここで、追加すると、プロジェクト依存関係も合わせて設定される。
とりあえず、今まで設定でなくこんな方法になったかは、リンクの設定を細かく設定できるとして、
納得するとしても、なぜ中途半端な、プロジェクト依存関係の手順が残されているのかは不明である。
さらに、あたまを悩ますのは、
たとえば、Aスタティックライブラリを、あらたに、AAスタティックライブラリのサブプロジェクトを作成して、
Aスタティックライブラリと結合させる場合、今回の方法で「新しい参照の追加」をAスタティックライブラリ
から結合させたところ、依存関係は成立するが、デフォルトでは結合されない。
結合させる場合、詳細設定であるプロジェクト参照のプロパティの項目にある「ライブラリ依存関係のリンク」
をTrueにする必要がある(BアプリケーションとAスタティックライブラリとの参照追加では、デフォルトTrueになっているのに、スタティックライブラリからの追加では、デフォルトFalseになる)。
そのため、BアプリケーションにAスタティックライブラリを追加しただけでは、AAスタティックライブラリーのオブジェクトは、参照できず、リンクエラーになる。
補足だが、AとAAプロジェクトを「ライブラリ依存関係のリンク」でTrueにしなくても、
Bアプリケーションをリビルドすれば、リンクは成功した。
なぜ?これは私だけ??
以上、C++を使用する場合、ほとんど罠に近いと思われるが、
開発言語の主体が、.NET側になったための弊害なのだろうか?
PR