J'ai une application C++ qui est liée à certaines bibliothèques dynamiques tierces. Certaines de mes classes principales héritent de ces bibliothèques, et font des appels de fonction à ces bibliothèques, etc. Mon application fonctionne sans l'inclusion de ces bibliothèques en théorie (ie, si je supprimais manuellement tout le code et les références se rapportant à ces bibliothèques, fonctionne encore), il serait juste plus limité dans la fonctionnalité. Si je pouvais faire une analogie, imaginez que j'ai créé un clone Windows Notepad, et inclus une bibliothèque tierce qui permet aux utilisateurs d'intégrer des images et des vidéos dans le document.C++: autorise l'exécution du programme même si une DLL tierce est manquante?
Lorsque je distribue mon application, il est possible que mes clients ne disposent pas de ces bibliothèques. Existe-t-il une façon dont mon programme peut détecter si la bibliothèque de DLL requise existe, et ignore simplement tout le code lié s'il n'est pas installé?
Actuellement, si j'exécute mon application sans les bibliothèques tierces installées, elle affiche les erreurs liées aux DLL manquantes et aux plantages. Une solution évidente est de simplement libérer deux versions de mon application ... une sans les dépendances externes et une avec, mais je voudrais éviter de gérer deux produits indépendamment comme ça.
Vous devrez peut-être procéder à une nouvelle architecture, mais [chargement dynamique] (https://en.wikipedia.org/wiki/Dynamic_loading) pourrait faire partie de la solution. –
Vous pouvez être intéressé par le [Plugin Pattern] (https://stackoverflow.com/questions/785480/good-patterns-for-a-c-c-plugin-based-system). – user0042