Avatar ·

Quand utiliser les bibliothèques dynamiques et quand utiliser les bibliothèques statiques en C++ ?

Bonjour à tous ! Je commence tout juste à comprendre le C++ et la compilation de projets, et je suis confus au sujet des bibliothèques. J'ai à peu près compris qu'il existe des bibliothèques statiques (.lib, .a) et dynamiques (.dll, .so), mais je n'arrive pas à comprendre quand les utiliser en pratique. Par exemple, j'écris un petit projet — une calculatrice en console. J'utilise une bibliothèque pour les fonctions mathématiques (disons, la mienne). Si je la lie statiquement, le code est simplement copié dans mon .exe. Si je la lie dynamiquement, la bibliothèque sera un fichier séparé. Quel est l'avantage ? Sur Internet, on dit que les bibliothèques statiques rendent l'exe plus gros, et les dynamiques plus petit, mais ce n'est pas la seule différence. J'ai aussi entendu que les DLL peuvent « casser » lors d'une mise à jour, contrairement aux statiques. Mais alors, pourquoi utiliser les dynamiques si elles sont peu fiables ? Et comment lier correctement des bibliothèques tierces, comme Boost ou OpenGL ? J'ai besoin d'une solution qui fonctionne à la fois sur Windows et Linux. Aidez-moi, s'il vous plaît, à y voir plus clair. Donnez des exemples.