Библиотеки DLL могут вызывать конфликты между приложениями по нескольким причинам:
- Отсутствие стандартов на имена, версии и положение DLL в файловой структуре. 1 Несовместимые DLL легко замещают или отключают друг друга. 1
- Отсутствие стандарта на процедуру установки. 1 Установка новых программ приводит к замещению работающих DLL на несовместимые версии. 1
- Отсутствие поддержки DLL со стороны компоновщиков и механизмов защиты. 1 Несовместимые DLL могут иметь одинаковые имя и версию. 1
- Отсутствие стандартных инструментов идентификации и управления системой DLL. 1 Пользователи и администраторы не могут идентифицировать изменённые или проблемные библиотеки DLL. 2
- Разделяемая природа DLL. 4 После установки нового приложения обновляются и совместно используемые компоненты. 4 В результате другие программы при попытке использовать изменённые компоненты «зависают». 4
Кроме того, библиотеки DLL не имеют встроенного механизма обратной совместимости. 2 Даже незначительные изменения в библиотеке DLL могут сделать её внутреннюю структуру настолько отличной от предыдущих версий, что попытка их использования, как правило, приводит к аварийному завершению работы приложения. 2