4

私の実行可能ファイル MyApp が so ファイル boost-system.so に対して動的にリンクするとします。コンパイルすると、しばらくの間はすべて正常に動作します。ブーストシステム関数への私の呼び出しは、彼らがすべきことを行います。

しばらくして、別の so ファイル SomeAPI.so にリンクする必要があることに気付きました。ただし、SomeAPI.so は boost-system.a に対して静的にリンクしていますが、「私の」boost-system (もちろん) とまったく同じ名前の関数を持つ古いバグのあるバージョンです。これで、すべての呼び出し (MyApp と SomeAPI の両方から) は、静的にリンクされたバージョンの SomeAPI に移動します (リンクの順序によっては、私のバージョンのブーストシステム、どちらも私にとって悪いことです)。

MyApp からの呼び出しが自分のバージョンの boost-system に行き、SomeAPI が静的にリンクされた boost-system.a 関数を使用するようにします。Windowsでは、これがどのように機能するかです。

なぜこれが起こらないのか理解していますが、「私の」ブーストシステムの名前空間をローカルのものに変更する以外に、これを回避する方法はありますか?

4

1 に答える 1