Avatar ·

Qual é a diferença entre bibliotecas estáticas e dinâmicas (shared) em C++?

Olá a todos! Recentemente comecei a estudar C++ e estou tentando entender as bibliotecas. Olhando projetos no GitHub, vejo que alguns usam arquivos .lib, outros .dll (ou .so no Linux). Pelo que entendi, existem dois tipos de bibliotecas: estáticas e dinâmicas (shared). Alguém pode explicar em palavras simples qual é a diferença? Tenho um pequeno projeto: escrevi uma classe para trabalhar com matrizes (multiplicação, transposição, etc.). Agora quero transformá-la em uma biblioteca para usar em diferentes programas. Mas não entendo qual tipo escolher. O que acontece se eu usar uma biblioteca estática? E se usar uma dinâmica? Como isso afetará o tamanho do arquivo executável, a velocidade de execução e a facilidade de atualização? Aqui está um exemplo de código que quero transformar em biblioteca: ```cpp // matrix.h #pragma once #include class Matrix { public: Matrix(int rows, int cols); Matrix operator*(const Matrix& other) const; Matrix transpose() const; void print() const; private: