1

現在、使用しているポータブル C ライブラリの 1 つにジレンマがあります。2 つの高レベルの lib (libA と libB など) があります。それらは非常に異なる API を提供し、ユーザー構成オプションに依存します。私はそれらを一緒にマージすることに反対です。なぜなら、後で libC、libD を libA とマージすることを意味するからです。だから私はこのきれいな分離を維持しようとしています. これは、libB ではなく libA のみが必要な場合、アプリケーション プログラマーが軽量アプリケーションを作成できることも意味します。

問題は、libB が libA のシンボルを使用することです。ただし、公開したくないlibAの低レベルAPIを使用しています。コードの重複を回避しながら、この低レベル API の公開を防ぐ方法はありますか?

UNIX ではコンパイル中にgcc 可視性フラグを使用し、Windows では同等のフラグを使用しています。したがって、明らかにシンボルが表示されます。

$ nm -D bin/libA.so
[...]
00000000000045e6 T low_level_func1
00000000000043d8 T low_level_func2

静的low-levelライブラリを作成することはできますか? ビルド中に libA と libB をリンクし、このlow-levelライブラリをインストールまたは配布しないでください。これはポータブルですか?移植可能なソリューション (Linux、Windows、FreeBSD、MacOSX...) を見つける必要があります。

ありがとう

4

1 に答える 1

0

ここでハックや回避策を実行しようとはしません。これは設計上の問題であり、回避策を実行すると、最終的にはあなたに戻ってきます. アダプターの設計パターンを調べることをお勧めします: http://en.wikipedia.org/wiki/Adapter_pattern

于 2012-10-22T08:45:04.107 に答える