3

実行可能ファイルがあり、ライブラリが別のライブラリの異なるバージョンを使用している場合、問題はありますか?

例:

実行可能ファイル:A.exeがあり、基本的にラップして静的ライブラリA.libに依存している場合

A.exeとA.libの両方に別のライブラリB.libが必要です

私がこのような状況にある場合:

A.libライブラリにはB.libバージョン1が含まれています(このライブラリのヘッダーファイルを使用)A.exe実行可能ファイルにはB.libバージョン2が含まれていますA.exe実行可能ファイルはB.libバージョン2に対してリンクしています

どのような条件下でこれが問題になるでしょうか?

ありがとう

4

1 に答える 1

2

同じ関数がB1.LibとB2.Libの両方に存在し、両方がA.exeにリンクされている場合、問題が発生する可能性があります。基本的に、B1::fnがB2::fnに異なる結果を返し、A.LibがB1の結果に依存し、A.exeがB2の結果に依存している場合、重大な問題が発生します。リンカは、検出した最初の実装にリンクするだけであり、それがB1またはB2にあることを100%確信することはできません。

現実的には、B2.libを使用するようにA.libを書き直す方がはるかに安全です。名前空間があなたの友達であることに失敗すると...

于 2010-08-26T08:45:59.980 に答える