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: