Russian Qt Forum

Qt => Общие вопросы => Тема начата: Zmeishe от Ноябрь 30, 2010, 15:43



Название: QLibrary и VERSION
Отправлено: Zmeishe от Ноябрь 30, 2010, 15:43
Есть библиотека - mylib. У неё в файле pro стоит VERSION = 2.0.0
В Linux помимо самой библиотеки создаются символические ссылки на неё
libmylib.so
libmylib.2.so
libmylib.2.0.so и т.д.

Вызоваю из другого модуля
QLibrary lib("mylib");

никаких ошибок нет.

В Windows библиотека сразу создаётся с именем mylib2.dll символических ссылок там нет.

Вызываю из другого модуля
QLibrary lib("mylib");

Естественно выдаёт ошибку, что библиотека не существует.
Т.е. при смене версии библиотеки для Windows необходимо править исходники других модулей.
А их ещё надо вспомнить.


Как подавить дописывание номера версии к имени файла в Windows?



Название: Re: QLibrary и VERSION
Отправлено: BRE от Ноябрь 30, 2010, 15:49
Попробуй загружать:
QLibrary lib("mylib2");


Название: Re: QLibrary и VERSION
Отправлено: Zmeishe от Ноябрь 30, 2010, 16:22
Попробуй загружать:
QLibrary lib("mylib2");


Так я об этом написал:
т.е. при смене версии библиотеки для Windows необходимо править исходники других модулей.
Имелось ввиду именно это QLibrary lib("mylib2");

Но ведь надо вспомнить в каких модулях программы ипользуется обращение к mylib.
Или каждый раз поиском шерстить.
Не по фень-шую это.


Название: Re: QLibrary и VERSION
Отправлено: BRE от Ноябрь 30, 2010, 16:26
Ну вообще можно использовать константы:
Код
C++ (Qt)
const char mylibName[] = "mylib";
 

Изменение major-версии обычно говорит о каких-то глобальных изменениях библиотеки и как правило изменении API.
Т.е. после таких изменений скорее всего придется что-то менять в клиентском коде для нормальной работы с этой библиотекой.


Название: Re: QLibrary и VERSION
Отправлено: Zmeishe от Ноябрь 30, 2010, 16:56
Нисколько не спорю.

Но хотелось делать одинаковую загрузку библиотеки, независимо от платформы.

А так получается
для Linux - QLibrary lib("mylib"); // независимо что там mylib.2.so, mylib.3.so, mylib.X.so
для Win - QLibrary lib("mylib2"); // И никак иначе.


Название: Re: QLibrary и VERSION
Отправлено: BRE от Ноябрь 30, 2010, 17:04
Отказаться от указания версии в имени библиотеки?


Название: Re: QLibrary и VERSION
Отправлено: Zmeishe от Ноябрь 30, 2010, 17:08
Вот только и остаётся в файле pro написать unix:VERSION=2.0.0 вместо VERSION=2.0.0


Название: Re: QLibrary и VERSION
Отправлено: BlackTass от Ноябрь 30, 2010, 19:58
Ну просто считается что изменение мажорной версии это очень серьезное изменение и все равно придется половину переписывать (так как изменились интерфейсы, добавились/удалились классы и тд)


Название: Re: QLibrary и VERSION
Отправлено: Alex Custov от Декабрь 01, 2010, 10:58
CONFIG += plugin


Название: Re: QLibrary и VERSION
Отправлено: Zmeishe от Декабрь 01, 2010, 17:17
А причём тут плагин?


Название: Re: QLibrary и VERSION
Отправлено: Alex Custov от Декабрь 04, 2010, 04:03
А причём тут плагин?

при том, что раз ты грузишь библиотеку динамически, де-факто это плагин, либо нестрогая зависимость. plugin запрещает дописывать версию к библиотеке и создавать ссылки (в Linux).