.Lib содержит заглушки для функций и т. Д., Которые экспортируются DLL. Вы связываете .lib с вашим EXE, и теперь ваш EXE знает, как вызывать функции. Но, конечно, там нет никакой функции - звонки не идут никуда. Во время загрузки, когда операционная система загружает ваш EXE-файл, он также загружает вашу DLL-библиотеку, а затем исправляет EXE-файл - там, где EXE-файл вызывает заглушку, загрузчик заменяет его вызовом на настоящую функцию в DLL.
Обычно вам не нужно отправлять .lib своим клиентам. Однако, если ваши клиенты хотят написать свои собственные EXE-файлы, которые используют вашу DLL, вам нужно будет отправить им .lib, чтобы они могли связать свои EXE-файлы с ним.
Ошибка компоновщика LNK1107 означает, что вы пытались связываться с DLL, а не с .lib. Это всегда неправильно, потому что по определению DLL динамически связана во время выполнения, а не статически во время сборки.