2

これはあまりきれいなことではないことはわかっていますが、それでもどうすればよいですか?

基本的に、xerces-c 2.7 を使用するサードパーティのライブラリを静的にリンクしており、xerces-c 3.1 を使用したいと考えています (2.x では実際には利用できない新しい最新かつ最高の機能のいくつかについて)。

2.7 を使用するモジュール (サード パーティ ライブラリによって内部的に使用され、コードに公開されることはありません) は、3.1 を使用するモジュール (私のコード内) とは何の共通点もありません。

これを行う方法はありますか?良いことではないことはわかっていますが、ライブラリのアップグレード リクエストを送信してから実際に完了するまでのリード タイムを考えるとゾッとします。おそらく少なくとも数か月はかかると思いますが、私はその不浄な道をたどりたくありません.

一般的なコンパイラに依存しないソリューションは、はるかに優れています。

4

1 に答える 1

0

「互換性のない依存関係を持つライブラリのリンク」で述べた以外の別の解決策は、異なるバージョンを異なる動的ライブラリにビルドして分離することです。最も簡単な方法は、xerces 3.1 を使用するコードを新しい動的ライブラリに移動し、それへのインターフェイスを作成することです。Xerces に対して静的にリンクしているため、これにより参照が動的ライブラリの内部に保持されます。選択した関数名のみがダイナミック ライブラリからエクスポートされるようにするには、 gcc の可視性の設定を変更する必要がある場合があります。

于 2012-05-30T15:52:42.947 に答える