S'il s'agit d'une application, mon premier choix serait de livrer un exécutable unique lié statiquement. J'ai eu l'occasion de travailler sur un produit qui a été livré sur 5 plateformes (Win2K, WinXp, Linux, Solaris, Tru64-Unix), et croyez-moi, maintenir des bibliothèques partagées ou des DLL avec une base de code importante est une tâche infernale. Supposons qu'il s'agisse d'une application non triviale qui implique l'utilisation d'une interface graphique tierce, de threads, etc. En utilisant le C++, il n'y a pas de véritable à sens unique de le faire sur toutes les plateformes. Cela signifie que vous devrez de toute façon maintenir des bases de code différentes pour les différentes plates-formes. Il y a aussi des comportements bizarres (bugs) de bibliothèques tierces sur différentes plates-formes. Tout cela crée un fardeau si l'application est livrée en utilisant différentes versions de la bibliothèque, c'est-à-dire que différentes versions doivent être attachées à différentes plates-formes. J'ai vu des personnes livrer des bibliothèques pour toutes les plateformes alors que la correction ne concernait qu'une plateforme particulière, simplement pour éviter la confusion des versions. Mais ce n'est pas si simple, le client a souvent un point de vue différent sur la manière dont il souhaite mettre à jour ou apporter des correctifs, ce qui doit également être pris en compte.
Bien sûr, si le binaire que vous construisez est volumineux, vous pouvez envisager les DLL/librairies partagées. Même si c'est le cas, ce que je suggérerais, c'est de construire votre application sous la forme de couches comme:- Application-->GUI-->Plateforme-->Base-->Fondamental
Ainsi, certaines bibliothèques peuvent avoir un code commun pour toutes les plates-formes. Seules des bibliothèques spécifiques comme "Platform" peuvent être mises à jour pour des comportements spécifiques. Cela vous facilitera grandement la vie.
L'option DLL/bibliothèque partagée est viable lorsque vous construisez un produit qui agit comme une solution complète plutôt que comme une simple application. Dans ce cas, différents sous-systèmes utilisent simultanément une logique commune dans le cadre de votre produit, logique qui peut alors être partagée en mémoire à l'aide de DLL/bibliothèques partagées.
HTH,