Cuándo usar bibliotecas dinámicas y cuándo estáticas en C++
¡Hola a todos! Estoy empezando a entender C++ y la compilación de proyectos, y tengo confusión con las bibliotecas. Parece que entendí que hay bibliotecas estáticas (.lib, .a) y dinámicas (.dll, .so), pero no puedo entender cuándo aplicar cada una en la práctica.
Por ejemplo, estoy escribiendo un proyecto pequeño: una calculadora de consola. Uso una biblioteca para trabajar con funciones matemáticas (digamos, la mía propia). Si la enlazo estáticamente, el código simplemente se copia en mi .exe. Si la enlazo dinámicamente, la biblioteca será un archivo separado. ¿Cuál es el beneficio?
En internet escriben que las bibliotecas estáticas hacen el exe más grande, y las dinámicas más pequeño, pero esa no es la única diferencia. También escuché que las DLL pueden "romperse" al actualizarse, mientras que las estáticas no. Pero entonces, ¿para qué sirven las dinámicas si son poco confiables? ¿Y cómo enlazar correctamente bibliotecas de terceros, como Boost u OpenGL? Necesito una solución que funcione tanto en Windows como en Linux.
Ayúdenme, por favor, a entender. Den ejemplos.