Название: Загрузка библиотеки при помощи QLibrary Отправлено: cresta от Август 09, 2007, 23:38 Посмотрел в поиске, в хелпе, и решил попробовать.
Создал либу с одной единственной ф-цией: Код: #include <qapplication.h> откомпилил в libofn.so.1.0.0 c параметрами в ofn.pro Код: TEMPLATE = lib Полученую либу положил в папку с программой, из которой предполагается загружать либу, и в папку /usr/X11R6/lib/ (как одну из папок, в которой ищутся либы). Теперь пытаюсь загрузить либу: Код:
Но либа не грузится ("library loading fail"). Почему? добавлено спустя 59 минут: Нашёл: если указано только имя либы, то грузится только из /usr/lib. Другие папки, типа qt-шных стандартных папок, не подходят. Или надо указывать полный путь к файлу. Название: Загрузка библиотеки при помощи QLibrary Отправлено: pastor от Август 10, 2007, 00:00 Можно ещё попробывать прописать путь к своей либе в LD_LIBRARY_PATH или натравить тулзу ldconfig на папку с либой
Название: Загрузка библиотеки при помощи QLibrary Отправлено: -=QT=- от Август 10, 2007, 09:11 А если смотреть в сторону кроссплатформенности то IMHO вообще принять за правило
работу с файлами осуществлять по полному пути. Название: Загрузка библиотеки при помощи QLibrary Отправлено: WW от Август 10, 2007, 09:18 Цитата: "-=QT=-" А если смотреть в сторону кроссплатформенности то IMHO вообще принять за правило работу с файлами осуществлять по полному пути. Пральна! :wink: /usr/lib/ он и в винде /usr/lib/! :lol: Название: Загрузка библиотеки при помощи QLibrary Отправлено: spigel от Август 10, 2007, 10:24 для загрузки библиотеки используй абсолютный путь либо доверься воли Qt и операционной системы :-)
в примерах Qt часто используется в этих случаях QDir! Название: Загрузка библиотеки при помощи QLibrary Отправлено: -=QT=- от Август 10, 2007, 10:51 Цитата: "WW" Цитата: "-=QT=-" А если смотреть в сторону кроссплатформенности то IMHO вообще принять за правило работу с файлами осуществлять по полному пути. Пральна! :wink: /usr/lib/ он и в винде /usr/lib/! :lol: Ну почти так как было сказано :D но с поправкой: Код: QmySettings::QmySettings() и еще так : Код: assistant->setArguments(QStringList() << "-profile" << QApplication::applicationDirPath() + QDir::separator() + "docs" + QDir::separator() + QString("manual.adp")); Название: Загрузка библиотеки при помощи QLibrary Отправлено: cresta от Август 11, 2007, 00:30 Вобще-то под виндой я qt не использую, вполне достаточно winapi без всяких классовых заморочек. Так что мне всё равно, во что проецируется в винде /usr/lib :)
А вот ещё вопрос по теме библиотек: есть в линухе какие-нибудь тулзы, позволяющие посмотреть импорт и экспорт либы или исполняемого файла (аналог PEExplorer)? добавлено спустя 2 минуты: Еще вопрос по либам: сделал динамически подгружаемую либу. Одна функция на экспорт. Загружается либа из тестовой проги нормально (через интерфейс QLibrary). Функция вызывается нормально. Теперь создаю в либе класс. Добавляю myclass.h и myclass.cpp. Класс из себя представляет простой диалог. Один конструктор и более ничего. Компилирую либу как исполняемый файл (для проверки) - все нормально, диалог присутствует. Компилирую как либу - и либа с классом внутри отказывается загружаться тестовым приложением. В чем проблема? Диалог не создаю, класс просто есть внутри, но его конструктор не вызываю. Или наличие класса в либе - это повод не загружаться? Название: Загрузка библиотеки при помощи QLibrary Отправлено: cresta от Август 12, 2007, 09:18 Всё, нашел в чём дело. Грабли в хэлпе разложены густо (или часто?) :)
А может и то, и другое :) |