Когда вы статически связываетесь с DLL, на самом деле происходит то, что компилятор определяет, какие функции DLL вызывает ваш код, и устанавливает указатели на заглушки, которые компоновщик затем вставляет в таблицу IMPORTS вашего приложения. Во время выполнения, когда ваше приложение запускается, загрузчик ОС сначала исправляет таблицу IMPORTS (среди прочего), загружая в память упомянутые DLL-библиотеки, а затем обновляя указатели функций по мере необходимости. Это происходит до того, как начинает выполняться любой код внутри приложения. Если загрузчик не может разрешить ссылку, он отобразит ошибку и завершит процесс. Сама DLL не скомпилирована в само приложение. Он должен оставаться в виде внешнего файла (чтобы его можно было использовать совместно с несколькими приложениями / процессами, если необходимо) и устанавливать там, где загрузчик ОС может его найти. Вот как библиотеки DLL предназначены для использования. Никакое количество изменяющихся опций проекта не изменит это.
Если вы хотите, чтобы код вашей библиотеки компилировался непосредственно в приложение, вам нужно создать статическую библиотеку вместо DLL.