Я большой поклонник статических библиотек практически везде. Одна важная вещь, которую библиотеки DLL дают вам, что статические библиотеки не могут сделать, - это возможность динамически загружать и выгружать функциональность библиотеки. Поэтому, если ваше приложение будет поддерживать какие-либо плагины с горячей заменой, вам нужно использовать динамические библиотеки. В противном случае вы можете использовать статические библиотеки.
Статические библиотеки открывают двери для многих оптимизаций, которые вы не можете сделать с динамическими библиотеками, потому что они выполняются во время компоновки. В мире Microsoft Link Time Code Generation (LTCG) дает вам возможность выполнять оптимизацию всей программы и удаление мертвого кода не только через ваше приложение, но и через ваши библиотеки (в gcc это называется Link Time Optimization [LTO])
Кроме того, статические библиотеки, как правило, облегчают распространение вашей программы, потому что вы не обязаны передавать много библиотечных файлов, и вы можете полностью избежать DLL-ада, если вы когда-либо создавали версию своей библиотеки.