| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets > [Qt5] Подключение dll |
| Автор: dix75 17.7.2015, 18:22 | ||
| Добрый день! Имеется библиотека которая подключается к проекту
Ну qtCreator сам добавляет. Все работает нормально. Мне необходимо поместить библиотеку в дирректорию отличную от программы. Совбственно вопрос как заставить программу видеть эту либу |
| Автор: bsa 22.7.2015, 22:51 |
| прописать путь в переменной PATH (для Windows), /etc/ld.so.conf (для Linux) или скопировать туда, где все DLL в системе лежат. Или грузить динамически через QLibrary. |
| Автор: dix75 28.7.2015, 11:40 |
| Спасибо. Кроме QLibrary и я ничего не увидел. |
| Автор: NoviceF 28.7.2015, 17:13 |
| Для posix совместимых систем должен работать экспорт переменной LD_LIBRARY_PATH со списком директорий, где нужно искать либы. Грузить динамически это неудобная штука, требующая много лишних телодвижений, на мой взгляд лучше обойти даже используя платформозависимые решения. |
| Автор: math64 29.7.2015, 13:08 |
| Посмотри в настройках проекта вкладку "Настройка запуска" - значение переменной "PATH" (для Windows). Эти настройки сохраняются в файле Project.pro.user. Вне Qt Creator можно запускать из bat-файла, но при этом появляется консольное окно. |
| Автор: dix75 30.7.2015, 11:35 |
| math64, А причем тут виндовс я под ним не работаю |
| Автор: math64 31.7.2015, 08:52 | ||
| Ну, в заголовке темы: dll. А это Windows. В Linux аналогично, но переменная в окружении другая. В приводимом Вами коде: win32:CONFIG - а это тоже для Windows. В Linux действительно сложнее. Для того чтобы положить свою библиотеку туда, где лежат остальные, нужны права рута, а они не всегда есть. Можно в файл проекта прописать:
но при этом при переносе на другую машину библиотеку придется разместить по тому же пути или пересобирать программу. Вместо bat/shell можно написать запускающую программу, действующую аналогично Qt Creator. Но такая программа не должна в свою очередь использовать dll/so, а поэтому должна быть написана без Qt. |
| Автор: NoviceF 31.7.2015, 11:11 | ||
я как малопонимающий в Qt хочу уточнить, а разве нельзя написать с Qt и слинковать статически? |
| Автор: math64 31.7.2015, 12:07 | ||
Можно и так, но файл получится большого размера. |
| Автор: bsa 3.8.2015, 18:26 |
| Если библиотека экспортирует только диалог (экспортируются по сути две функции - создать и уничтожить объект некого класса) или немного функций, то проще решить через динамическую загрузку. В противном случае, библиотеку нужно пихать в /usr/[local/]lib. |