Статическая библиотека означает, что код, который вы используете из библиотеки, включен в ваш исполняемый файл. Из-за этого вам не нужно отправлять библиотеку или требовать, чтобы конечный пользователь имел ее на своем компьютере. Однако это увеличивает размер вашего исполняемого файла и связывает вас с этой версией библиотеки, поэтому, если вам нужно обновить только библиотеку, вам необходимо отправить новый исполняемый файл.
Общая библиотека вызывает библиотеку в тот момент, когда она необходима (время выполнения) для выполнения кода, но требует, чтобы пользователь установил ее (обычно определенную или минимальную версию) на свой компьютер. Вы также можете распространять необходимую версию библиотеки вместе с вашим приложением.
Что касается того, что лучше, я не знаю. Я не программист Windows C ++ или MFC, поэтому я не могу сказать. На моих серверах Linux приложения, которые я пишу, обычно являются серверными и, таким образом, используют разделяемые библиотеки.
Это зависит от того, как ваше приложение будет использоваться, распространяться, обновляться, как часто меняется библиотека MFC, если она обычно доступна на ПК пользователя и т. Д.