0

dlopenを使用してC/C++で共有ライブラリを開くことができることはわかっています。
dlopen呼び出しの結果を使用して、機能が存在するかどうかを判断できます。

ただし、多くの機能を備えた既存のライブラリをロードする必要があります。

これらすべての関数の関数ポインターバージョンの長いリストを再定義し、それぞれにdlsymを割り当てる代わりの方法はありますか?

4

1 に答える 1

4

考えられる解決策の1つは、物事を少し考え直すことです。

共有オプションライブラリは非常に大きい場合がありますが、それがオプションの場合、それとインターフェイスするために作成しているコードもオプションですか?

dlsym()割り当ての量を減らすために、オプションのコンポーネントのみを実装するオプションのライブラリに対してリンクされた独自のダイナミックライブラリを作成できます。

次に、アプリケーションのオプションではない部分から、アプリケーションのオプションのコンポーネントのみを動的にロードして割り当てます。

オプションのライブラリがCライブラリであり、オプションのコンポーネントがC ++オブジェクトである場合、これは事態を複雑にしすぎる可能性がありますが、それはあります...

于 2012-12-07T02:41:08.063 に答える