Мнение: Статическое, почти во всех случаях.
Построение интерфейсов в динамически загружаемых библиотеках намного сложнее в C ++ для Windows. Например, в отличие от общих объектов Unix, у вас не может быть стандартного синглтона для всех модулей, потому что у DLL будет собственный набор статических переменных.
Объектно-ориентированные интерфейсы часто трудно экспортировать из DLL.
Что касается времени загрузки, такие проблемы, как перебазировка, должны решаться общими библиотеками.
С другой стороны, библиотеки, которыми вы не делитесь сегодня, могут стать общими в будущем. Однако в большинстве случаев лучше заплатить цену дублирования в ОЗУ или образе диска, чем цену зависимости от дополнительных модулей.