Russian Qt Forum
Ноябрь 27, 2024, 04:33 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: QLibrary и VERSION  (Прочитано 5000 раз)
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?

Записан
BRE
Гость
« Ответ #1 : Ноябрь 30, 2010, 15:49 »

Попробуй загружать:
QLibrary lib("mylib2");
Записан
Zmeishe
Гость
« Ответ #2 : Ноябрь 30, 2010, 16:22 »

Попробуй загружать:
QLibrary lib("mylib2");


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

Но ведь надо вспомнить в каких модулях программы ипользуется обращение к mylib.
Или каждый раз поиском шерстить.
Не по фень-шую это.
Записан
BRE
Гость
« Ответ #3 : Ноябрь 30, 2010, 16:26 »

Ну вообще можно использовать константы:
Код
C++ (Qt)
const char mylibName[] = "mylib";
 

Изменение major-версии обычно говорит о каких-то глобальных изменениях библиотеки и как правило изменении API.
Т.е. после таких изменений скорее всего придется что-то менять в клиентском коде для нормальной работы с этой библиотекой.
« Последнее редактирование: Ноябрь 30, 2010, 16:30 от BRE » Записан
Zmeishe
Гость
« Ответ #4 : Ноябрь 30, 2010, 16:56 »

Нисколько не спорю.

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

А так получается
для Linux - QLibrary lib("mylib"); // независимо что там mylib.2.so, mylib.3.so, mylib.X.so
для Win - QLibrary lib("mylib2"); // И никак иначе.
Записан
BRE
Гость
« Ответ #5 : Ноябрь 30, 2010, 17:04 »

Отказаться от указания версии в имени библиотеки?
Записан
Zmeishe
Гость
« Ответ #6 : Ноябрь 30, 2010, 17:08 »

Вот только и остаётся в файле pro написать unix:VERSION=2.0.0 вместо VERSION=2.0.0
Записан
BlackTass
Гость
« Ответ #7 : Ноябрь 30, 2010, 19:58 »

Ну просто считается что изменение мажорной версии это очень серьезное изменение и все равно придется половину переписывать (так как изменились интерфейсы, добавились/удалились классы и тд)
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #8 : Декабрь 01, 2010, 10:58 »

CONFIG += plugin
Записан
Zmeishe
Гость
« Ответ #9 : Декабрь 01, 2010, 17:17 »

А причём тут плагин?
Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #10 : Декабрь 04, 2010, 04:03 »

А причём тут плагин?

при том, что раз ты грузишь библиотеку динамически, де-факто это плагин, либо нестрогая зависимость. plugin запрещает дописывать версию к библиотеке и создавать ссылки (в Linux).
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.133 секунд. Запросов: 23.