Russian Qt Forum

Программирование => Общий => Тема начата: dr_Begemot от Апрель 30, 2009, 14:53



Название: Вопрос по поводу версий DLL
Отправлено: dr_Begemot от Апрель 30, 2009, 14:53
Возник вопрос по поводу версий...

К примеру я создаю библеотеку с версией 1, появляется файл dll1.dll
Создаю приложение использующее dll1.dll

Далее, изменяю версию библиотеки на 2, компилю.
Далее удаляю файл dll1.dll и запускаю приложение. Возникает ошибка, что dll1.dll не найдена. Вопрос такой, почему приложение не использует библиотеку с более высокой версией? Или я что-то не так делаю?


Название: Re: Вопрос по поводу версий DLL
Отправлено: Eugene Efremov от Апрель 30, 2009, 18:50
Это сделано специально. Изменение старшего номера версии должно указывать на отсутствие бинарной совместимости с предыдущей, поэтому — оно будет создавать dll с другим именем (dll1.dll, dll2.dll и т.д.). Приложение же ищет dll именно по имени файла.

Иными словами — если изменения в dll не ведут к потери совместимости (т.е. все интерфейсы и смещения остались прежними), то нужно заменить новым существующий dll (т.е. новая весрия должна быть не 2.0.0, а, допустим, 1.0.1). Если же изменения несовместимы — нужно сменить старший номер, получить новый dll и, для вступления изменений в силу, пересобрать заново весь использующий библиотеку софт.