質問: スタティックリンクライブラリで2重リンクできる? スタティックリンクライブラリで2重リンクをしようとすると、warning lnk4006が発生してしまいます。 メッセージ: "~で定義されています; 2 つ目以降の定義は無視されます" 例えば、 aaa.libがbbb.libとccc.libをリンクしてて、bbb.libとccc.libはそれぞれddd.libをリンクしているとします。*.libはすべてスタティックリンクライブラリで提供を考えています。 [ aaa.lib ] | | [bbb.lib] [ccc.lib] | | [ddd.lib] [ddd.lib] 調べてみると「ライブラリーを結合する時に,このエラー・メッセージが表示された場合,ライブラリーに既に存在しているシンボルを追加しようとしています。」ということで、要は"ddd.lib"が重複してリンクされているという事のようなのですが、原因ばかりで解決策が分かりません。 lnk4006の解決法が分かれば良いのですが、最終的にはこの構成で"aaa.lib"だけで提供するようなライブラリを作成したいです。実現するためにはどのようにしたら良いのでしょうか?アイデアを頂けたら助かります。また詳しい方がいらっしゃいましたらご教授お願いいたします! ※windows2000でvisualstadio.net2003を使用してます。
回答: あ、ddd.libが同一でも、 ddd.libでグローバル変数を互いに操作している場合、 予期しない衝突の可能性もあります。ご注意を。