2

100 個の API を公開する静的ライブラリがあります (つまり、100 個の API は、ライブラリと共に提供するさまざまなヘッダー ファイルにリストされています)。

たとえば、さまざまなアプリケーションがこのライブラリを使用しようとしていて、それぞれが 100 個の API のサブセットのみを使用しているとします。例: アプリケーション 1 は 10 個の API を使用し、アプリケーション 2 は 20 個の API を使用します。

このシナリオでは、10 個の API のみを Application-1 に公開し、20 個の API のみを Application-2 に公開したいと考えています。つまり、すべての API をすべての API に公開したくはありません。顧客。

解決策の 1 つは、アプリケーション名に基づいてマクロを追加し、それをコード内で調整することです。

他に利用可能なソリューションは何ですか? 共有ライブラリの場合、マップ ファイルを使用して公開された一連の API を制御できます。そのようなソリューションは静的ライブラリに適用できますか?

4

1 に答える 1

0

ほとんどのコンパイラには、シンボルの可視性(つまり、シンボルがリンカーに公開されているかどうか)を制御する方法があります。GCCでそれを行う方法に関する記事は次のとおりです。

http://gcc.gnu.org/wiki/Visibility

他のコンパイラに対応するドキュメントを簡単に見つけることができるはずです。

ポータブルコードでは、これはコンパイラごとのマクロを使用して処理されることがよくあります。

于 2013-02-27T15:53:19.657 に答える