Une bibliothèque statique signifie que le code que vous utilisez à partir de la bibliothèque est incluse dans votre exécutable. De ce fait, vous n'avez pas besoin d'expédier la bibliothèque, ou exiger que l'utilisateur final pour l'avoir sur leur machine. Toutefois, cela gonfle la taille de votre exécutable et vous lie à cette version de bibliothèque, donc si vous avez besoin de mettre à jour seulement de la bibliothèque, vous devez expédier un nouveau fichier exécutable.
Une bibliothèque partagée appels de la bibliothèque au moment où il en a besoin (runtime) pour exécuter le code, mais il exige de l'utilisateur (généralement un ou spécifiques de la version minimale) installé sur leur machine. Vous pouvez également distribuer la version requise de la bibliothèque avec votre application si vous en avez besoin.
Que pour ce qui est mieux, je ne sais pas. Je ne suis pas un Windows ou C++ MFC programmeur donc je ne pouvais pas le dire. Sur mes serveurs Linux, les applications que j'écris sont généralement côté serveur et donc d'utiliser des bibliothèques partagées.
Il dépend de la façon dont votre application à utiliser, de distribuer, de mise à jour, comment souvent à la bibliothèque MFC changements, si elle est généralement disponible sur les Pc de l'utilisateur, etc.
Si vous utilisez DLL MFC comme la liaison dynamique, votre code aurez besoin de Microsoft de la Fondation de la Bibliothèque de DLL (plus précisément la version de votre code exige) installé avec votre application ou la dll à l'utilisateur final. Donc, cela signifie que votre package d'installation contiendrait
Votre application/DLL et les fichiers de prise en charge
Toutes les Dll MFC
Cela rend l'installation de la taille du package d'aller plus grand et aussi prendre le temps pour l'utilisateur de télécharger votre installation.
Si vous avez un lien pour MFC comme statique de la bibliothèque, vous code fonctionne même sans les Dll MFC présente à l'utilisateur final . La raison en est assez simple que toutes les bibliothèques MFC vous refererred dans votre code, sera lié dans votre application ou la dll. Cela signifie que ces bibliothèques MFC utilisé dans votre application/dll devient la part de la votre binaire; cependant, votre app/dll va être un peu plus grand.
Si Andy réponse était correcte pour différencier statique & bibliothèque partagée, puisque cette question relève de demander à la différence entre "à l'Aide de MFC comme statique ou la bibliothèque partagée", cette réponse est choisie pour être le droit.
Une autre considération est de l'entretien de votre application.
Si vous livrez le MSFT redis, liées dynamiquement à l'encontre de ses bibliothèques, et puis MSFT plus tard "fixe" vitale faille dans une DLL, ils patcher la DLL sur votre client de machines à travers la Fenêtre de mise à Jour. Si vous lier statiquement, vous devez mettre à jour tous vos clients directement.
Bien sûr, si vous êtes préoccupé qu'une version patchée de DLL peut briser votre demande (parce que vous compter sur un comportement non spécifié), vous pouvez gérer la maintenance (et tester) directement avec votre client.
Une bibliothèque statique signifie que le code que vous utilisez à partir de la bibliothèque est incluse dans votre exécutable. De ce fait, vous n'avez pas besoin d'expédier la bibliothèque, ou exiger que l'utilisateur final pour l'avoir sur leur machine. Toutefois, cela gonfle la taille de votre exécutable et vous lie à cette version de bibliothèque, donc si vous avez besoin de mettre à jour seulement de la bibliothèque, vous devez expédier un nouveau fichier exécutable.
Une bibliothèque partagée appels de la bibliothèque au moment où il en a besoin (runtime) pour exécuter le code, mais il exige de l'utilisateur (généralement un ou spécifiques de la version minimale) installé sur leur machine. Vous pouvez également distribuer la version requise de la bibliothèque avec votre application si vous en avez besoin.
Que pour ce qui est mieux, je ne sais pas. Je ne suis pas un Windows ou C++ MFC programmeur donc je ne pouvais pas le dire. Sur mes serveurs Linux, les applications que j'écris sont généralement côté serveur et donc d'utiliser des bibliothèques partagées.
Il dépend de la façon dont votre application à utiliser, de distribuer, de mise à jour, comment souvent à la bibliothèque MFC changements, si elle est généralement disponible sur les Pc de l'utilisateur, etc.
OriginalL'auteur Andy Shellam
[Je crois que j'ai ma réponse maintenant]
Si vous utilisez DLL MFC comme la liaison dynamique, votre code aurez besoin de Microsoft de la Fondation de la Bibliothèque de DLL (plus précisément la version de votre code exige) installé avec votre application ou la dll à l'utilisateur final. Donc, cela signifie que votre package d'installation contiendrait
Cela rend l'installation de la taille du package d'aller plus grand et aussi prendre le temps pour l'utilisateur de télécharger votre installation.
Si vous avez un lien pour MFC comme statique de la bibliothèque, vous code fonctionne même sans les Dll MFC présente à l'utilisateur final . La raison en est assez simple que toutes les bibliothèques MFC vous refererred dans votre code, sera lié dans votre application ou la dll. Cela signifie que ces bibliothèques MFC utilisé dans votre application/dll devient la part de la votre binaire; cependant, votre app/dll va être un peu plus grand.
OriginalL'auteur AKN
Une autre considération est de l'entretien de votre application.
Si vous livrez le MSFT redis, liées dynamiquement à l'encontre de ses bibliothèques, et puis MSFT plus tard "fixe" vitale faille dans une DLL, ils patcher la DLL sur votre client de machines à travers la Fenêtre de mise à Jour. Si vous lier statiquement, vous devez mettre à jour tous vos clients directement.
Bien sûr, si vous êtes préoccupé qu'une version patchée de DLL peut briser votre demande (parce que vous compter sur un comportement non spécifié), vous pouvez gérer la maintenance (et tester) directement avec votre client.
OriginalL'auteur Woodturner