Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Qt5] Подключение dll 
:(
    Опции темы
dix75
Дата 17.7.2015, 18:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 462
Регистрация: 17.7.2007

Репутация: 1
Всего: 1



Добрый день!

Имеется библиотека которая подключается к проекту 

Код

LIBS += -L$$PWD/../../../../Install/dialogs/ -lAboutDialog


Ну qtCreator сам добавляет. Все работает нормально.

Мне необходимо поместить библиотеку в дирректорию отличную от программы.
Совбственно вопрос как заставить программу видеть эту либу


--------------------
save your mind
PM MAIL   Вверх
bsa
Дата 22.7.2015, 22:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 24
Всего: 196



прописать путь в переменной PATH (для Windows), /etc/ld.so.conf (для Linux) или скопировать туда, где все DLL в системе лежат. Или грузить динамически через QLibrary.
PM   Вверх
dix75
Дата 28.7.2015, 11:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 462
Регистрация: 17.7.2007

Репутация: 1
Всего: 1



Спасибо.
 
Кроме QLibrary и я ничего не увидел.


--------------------
save your mind
PM MAIL   Вверх
NoviceF
Дата 28.7.2015, 17:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 313
Регистрация: 13.3.2012
Где: Ростов-на-Дону

Репутация: нет
Всего: 2



Для posix совместимых систем должен работать экспорт переменной LD_LIBRARY_PATH со списком директорий, где нужно искать либы.

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

Это сообщение отредактировал(а) NoviceF - 28.7.2015, 17:16
PM MAIL   Вверх
dix75
Дата 29.7.2015, 11:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 462
Регистрация: 17.7.2007

Репутация: 1
Всего: 1



Цитата(NoviceF @  28.7.2015,  17:13 Найти цитируемый пост)
Грузить динамически это неудобная штука,

да неудобно
Цитата(NoviceF @  28.7.2015,  17:13 Найти цитируемый пост)
на мой взгляд лучше обойти даже используя платформозависимые решения.

Ну не знаю на мой нет.

Интересно получается что, запуская приложение в Qt creator оно видит либу по определенному пути
запуская непосредственно нет

Судя по этой записи (привожу только для win) приложение должно видеть по этому адресу либы (так и есть)
Код

win32:CONFIG(release, debug|release): LIBS += -L$$PWD/../../../../Install/dialogs/ -lAboutDialog


Но прописать другой адрес только для запуска непосредственно приложения не получается


--------------------
save your mind
PM MAIL   Вверх
math64
Дата 29.7.2015, 13:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 23
Всего: 72



Посмотри в настройках проекта вкладку "Настройка запуска" - значение переменной "PATH" (для Windows).
Эти настройки сохраняются в файле Project.pro.user.
Вне Qt Creator можно запускать из bat-файла, но при этом появляется консольное окно.
PM   Вверх
dix75
Дата 30.7.2015, 11:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 462
Регистрация: 17.7.2007

Репутация: 1
Всего: 1



math64, А причем тут виндовс я под ним не работаю


--------------------
save your mind
PM MAIL   Вверх
math64
Дата 31.7.2015, 08:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 23
Всего: 72



Ну, в заголовке темы: dll. А это Windows. В Linux аналогично, но переменная в окружении другая.
В приводимом Вами коде: win32:CONFIG - а это тоже для Windows.

В Linux действительно сложнее. Для того чтобы положить свою библиотеку туда, где лежат остальные, нужны права рута, а они не всегда есть.
Можно в файл проекта прописать:
Код

 unix:QMAKE_RPATHDIR += $$PWD/<путь до библиотеки>

но при этом при переносе на другую машину библиотеку придется разместить по тому же пути или пересобирать программу.

Вместо bat/shell можно написать запускающую программу, действующую аналогично Qt Creator.
Но такая программа не должна в свою очередь использовать dll/so, а поэтому должна быть написана без Qt.

Это сообщение отредактировал(а) math64 - 31.7.2015, 08:55
PM   Вверх
NoviceF
Дата 31.7.2015, 11:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 313
Регистрация: 13.3.2012
Где: Ростов-на-Дону

Репутация: нет
Всего: 2



Цитата(math64 @  31.7.2015,  08:52 Найти цитируемый пост)
такая программа не должна в свою очередь использовать dll/so, а поэтому должна быть написана без Qt.


я как малопонимающий в Qt хочу уточнить, а разве нельзя написать с Qt и слинковать статически?
PM MAIL   Вверх
math64
Дата 31.7.2015, 12:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2505
Регистрация: 12.4.2007

Репутация: 23
Всего: 72



Цитата(NoviceF @  31.7.2015,  11:11 Найти цитируемый пост)
я как малопонимающий в Qt хочу уточнить, а разве нельзя написать с Qt и слинковать статически? 

Можно и так, но файл получится большого размера.

PM   Вверх
bsa
Дата 3.8.2015, 18:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия

Репутация: 24
Всего: 196



Если библиотека экспортирует только диалог (экспортируются по сути две функции - создать и уничтожить объект некого класса) или немного функций, то проще решить через динамическую загрузку. В противном случае, библиотеку нужно пихать в /usr/[local/]lib. 
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.0797 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.