Une bibliothèque statique signifie que le code que vous utilisez dans la bibliothèque est inclus dans votre exécutable. Pour cette raison, vous n'avez pas besoin d'expédier la bibliothèque ou d'exiger que l'utilisateur final l'ait sur sa machine. Cependant, cela gonfle la taille de votre exécutable et vous lie à cette version de la bibliothèque, donc si vous avez besoin de mettre à jour uniquement la bibliothèque, vous devez envoyer un nouvel exécutable. Une bibliothèque partagée appelle la bibliothèque au moment où elle en a besoin (runtime) pour exécuter le code, mais elle nécessite que l'utilisateur l'installe (généralement une version spécifique ou minimale) sur sa machine. Vous pouvez également distribuer la version requise de la bibliothèque avec votre application si nécessaire.
En ce qui concerne ce qui est mieux, je ne sais pas. Je ne suis pas un programmeur Windows C++ ou MFC donc je ne pourrais pas le dire. Sur mes serveurs Linux, les applications que j'écris sont généralement côté serveur et utilisent donc des bibliothèques partagées.
Cela dépend de la façon dont votre application doit être utilisé, distribué, mis à jour, la fréquence des changements de la bibliothèque MFC, si elle est généralement disponible sur les PC de l'utilisateur, etc.
Bien que la réponse d'Andy soit correcte pour différencier la bibliothèque statique et partagée, puisque cette question concerne la demande de différence entre "Utiliser MFC comme bibliothèque statique ou partagée", cette réponse est choisie pour être correcte. – AKN