Армянское Радио указал вам правильное направление (т.е. если вы не хотите СРАЗУ грузить dll при запуске exe-шника, а хотите сделать это позже), но вам следует учесть, что:
1) загружать все равно придется вручную, механизма в C++ для автоматической подгрузки dll именно в момент обращения к функции из нее не существует
2) загрузка вручную приводит вас к тому, что линковщик не будет связывать ваш exe и dll. Это значит, что вы не сможете пользоваться предварительными объявлениями функций в хедере - вам пригодятся только типы, а указатели на код функций нужно будет получать динамически, как сказал
Армянское Радио - по GetProcAddress(). Собственно, это за вас делает ОС при обычной линковке exe и dll.
3) пункты 1 и 2 разумеется актуальны только для DLL, для тех "DLL", которые на самом деле не DLL, а дотнетовские сборки, свои правила, не имеющие ничего общего с этими (там сборки и так по-дефолту грузятся в момент первого использования типа из этой сборки);
С учетом всего сказанного, неясно, зачем это вам: в 99% случаев динамическая загрузка нужна для реализации "плагинов" - когда заранее неизвестно, какая DLL будет загружена, чтобы потом можно было без перекомпиляции подсунуть любую DLL, если она экспортирует требуемые функции (для примера - плагины в foobar 2000).
У вас же нужно вполне конкретно загрузить SFML, так что непонятно зачем вам такие заморочки.