1

サーバー用の共有ライブラリを作成しているときに、次の状況に陥っています。

理解しやすくするために:

  1. サーバーフレームワークをfwAと呼びましょう
  2. 私が書いた libB という共有ライブラリ
  3. libC1 および libC2 という名前の fwA と libB の両方によってリンクされたライブラリの異なるバージョン

そして fwA は dllopen によって libB を読み込みます

以下は私の質問です。libCにはデータ構造(DS1)が定義されていますが、libC1とlibC2ではデータ構造がわずかに異なります。

コンパイラ/リンカー/プログラムは、使用するデータ構造のバージョンをどのように決定しますか?

4

2 に答える 2

0

構造定義が と で異なる場合、libC1どこlibC2かで間違ったオフセットにアクセスすることになります。その未定義の動作。このように使うべきではありません。

于 2013-01-09T12:55:00.497 に答える