Question

Je veux écrire une bibliothèque qui sera liée dynamiquement à partir d'autres programmes fonctionnant sur des systèmes d'exploitation modernes tels que Windows, Linux et OS / X (c'est-à-dire qu'elle sera déployée en tant que .dll ou .so module).

Quelle est la langue la plus appropriée dans ce cas? Devrais-je rester avec C simple? Ou est-ce que C ++ aussi va bien?

Était-ce utile?

La solution

Vous pouvez utiliser C ou C ++ pour l'implémentation, mais je recommanderais de définir l'interface en C pur. Cela sera beaucoup plus facile à intégrer.

Autres conseils

La difficulté avec la création d'une bibliothèque C ++ distribuée sous forme binaire est que vos clients - les utilisateurs de la bibliothèque - sont généralement obligés d'utiliser le même compilateur C ++ que celui avec lequel vous avez créé la bibliothèque. Cela peut être problématique si vous souhaitez vous tenir au courant et qu’ils ne le font pas, ou s’ils souhaitent le faire et vous ne le faites pas. Si vous traitez en source, le problème est moins grave, à condition que votre C ++ soit suffisamment portable pour pouvoir être utilisé par tous les compilateurs utilisés par vos clients.

Si le code peut être utilisé depuis C, je coderais probablement vers une interface C. Vous pouvez également fournir deux interfaces: l’interface C ++ native et une interface C. Mais c'est plus de travail qu'une simple interface en C. Par ailleurs, une interface C ++ peut présenter des avantages (en utilisant éventuellement des itérateurs STL, etc.) et cela pourrait influencer votre décision.

Je dirais aussi que C est le plus petit dénominateur commun. Vous avez toujours la possibilité d'écrire un wrapper C ++ dans la bibliothèque principale si cela s'intègre mieux à l'application appelante.

Je dirais que C est le portable le plus prévisible, mais C ++ est faisable.

Considérez le facteur du plus petit dénominateur commun et obligez les consommateurs de vos bibliothèques à prendre les décisions qui leur conviennent le mieux. La construction de extern c déroute probablement encore certaines personnes et vous voulez que votre bibliothèque aille loin et atteigne le plus large public. Rendre les interfaces pures c. C ++ est correct à condition d'éviter certains coins plus sombres (comme STL). C est la barre la plus portable aucune. Créer des bibliothèques pour toutes les plateformes disponibles n’est pas une mince affaire, alors jetez un coup d’œil à ici pour quelques astuces. Vous voudrez peut-être aussi envisager d'utiliser autoconf, etc.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top