2013-02-27 2 views
2

J'ai une bibliothèque statique qui expose 100 API (s) (c'est-à-dire que les 100 API (s) sont listées dans les divers fichiers d'en-tête que je fournis avec la bibliothèque). Disons que de nombreuses applications différentes essaient d'utiliser cette bibliothèque et que chacune utilise un sous-ensemble de ces 100 API (s). Pour Ex: Application-1 utilise 10 API (s), Application-2 utilise 20 API (s) etcComment contrôler l'ensemble des API exposées dans une bibliothèque statique?

Dans ce scénario, je souhaite que seulement 10 API (s) soient exposées à Application-1 et seulement 20 API (s) être exposé à Application-2, c'est-à-dire que je ne veux pas que toutes les API soient exposées à tous les clients. L'une des solutions est que j'ajoute une macro basée sur le nom de l'application et que je la personnalise dans le code.

Quelles sont les autres solutions disponibles? Dans le cas d'une bibliothèque partagée, je peux contrôler l'ensemble des API exposées à l'aide d'un fichier map. Toutes ces solutions peuvent être appliquées à une bibliothèque statique?

Répondre

0

La plupart des compilateurs ont des moyens de contrôler la visibilité des symboles (c'est-à-dire si le symbole est exposé à l'éditeur de liens ou non). Voici un article sur la façon de le faire dans GCC:

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

Vous devriez être en mesure de trouver facilement la documentation correspondante pour d'autres compilateurs.

Dans le code portable, cela est souvent géré à l'aide d'une macro par compilateur.

+0

Je l'avais trouvé auparavant. Mais, cela n'aide pas pour les bibliothèques statiques si je comprends bien. SVP clarifier si ma compréhension est fausse. Merci. – Jay

Questions connexes