DLL (Dynamic-Link Library — динамически подключаемая библиотека) — это файл, содержащий код и данные, которые могут быть использованы несколькими программами одновременно. DLL позволяет разделять код и ресурсы, что обеспечивает модульность, возможность повторного использования и эффективного использования памяти.
Также стоит упомянуть, что в контексте производительности, расположение и организация DLL-файлов непосредственного влияния на процесс выполнения вашей программы не оказывают. Это больше вопрос удобства организации вашего проекта и его структуры.
<br>
### Подключение сторонних DLL-библиотек
Танцы с бубном начинается когда мы хотим поставить либы для iOS/android.
Есть готовые assets из asset store, которые позволяют не возиться несколько дней, чтобы подключить firebase или Facebook SDK. Например [этот asset](https://assetstore.unity.com/packages/tools/integration/mobile-tools-complete-game-132284) позволяет быстро подключить в том числе AdMob.
<br>
DLL библиотеки от сторонних разработчиков, какой код там внутри?
Как сторонняя DLL библиотека работает с Unity проектом?
<br>
### Если в проекте нужно использовать DLL разных версий
Может быть такая ситуация, что разные либы (Library1, Library2) используют в качестве зависимости одну либу (Library3 V.1 и Library3 V.2), но разных версий.
Такая ситуация применима, если все библиотеки являются DLL.

Решением будет использовать ilmerge библиотеку (они разные и от разных авторов)
Олег в свое время пользовался [таким](https://github.com/gluck/il-repack) решением. Запускал виртуалку на Windows и запустил там exe файл библиотеки. Есть отдельная заметка как достать исполняемый файл из GitHub-репозитория.
**"Ад DLL" (DLL Hell):** Этот термин относится к ситуациям, когда одна программа требует одной версии DLL, а другая - другой. Это может привести к конфликтам и ошибкам. Microsoft внедрил систему "бок о бок" (side-by-side) в Windows для смягчения этой проблемы.