До тех пор, пока вы ограничиваете использование определенных библиотек и не используете никаких библиотек DLL, вы должны быть хорошими.
К сожалению, есть некоторые библиотеки, которые вы не можете связать статически. Лучший пример, который у меня есть, - OpenMP. Если вы используете поддержку OpenMP в Visual Studio, вам необходимо убедиться, что установлена среда выполнения (в данном случае vcomp.dll).
Если вы используете DLL, то вы не можете передавать некоторые предметы туда-сюда без серьезной гимнастики. std :: строки приходят на ум. Если ваши exe и dll динамически связаны, то распределение происходит в CRT. В противном случае ваша программа может попытаться выделить строку с одной стороны и освободить ее с другой. Плохие вещи ...
Тем не менее, я все еще статически связываю свои exe и dll's. Это значительно снижает вариабельность в установке, и я считаю, что это стоит некоторых ограничений.