Доброго времени суток. Пишу базу данных в QT с использованием SQLite и Exaro. Возникла задача вывести отчет созданный в Exaro из приложения QT. Сборка проекта проходит без ошибок и предупреждений, однако приложение не работает, в консоли QT пишет, что приложение завершилось крахом, а в терминале Linux такое сообщение:
error while loading shared libraries: libReport.so.2.0: cannot open shared object file: No such file or directory
Из-за большого объема исходного кода выкладываю только те его части, которые связаны с Exaro, без них (то есть без Exaro) программа полностью работоспособна. Приложение пишу в QT 5.5.0, платформа Linux. Очень надеюсь на вашу помощь в решении проблемы. Заранее благодарен.
Содержимое pro-файла:
QT += core gui sql xml script uitools
#здесь лежит библиотека libReport.so
LIBS += -L/usr/local/lib -lReport
#здесь лежат заголовочники exaro и propertyeditor
INCLUDEPATH += /usr/local/include
...
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow),
rep_int(0)
...
//код кнопки, которая должна выводить отчет
rep_int=dynamic_cast<Report::ReportInterface *>(rep_eng.loadReport("Report.bdrt"));
rep_int->setDatabase(db);
rep_int->exec();
Файл Report.bdrt находится в одной папки с файлом БД и исполняемым файлом программы. Также хочу сказать, что Exaro на компьютере есть и также работает.
Здравствуйте, ivan_antonov, Вы писали:
_>[code] _>error while loading shared libraries: libReport.so.2.0: cannot open shared object file: No such file or directory _>Содержимое pro-файла: _>
_>#здесь лежит библиотека libReport.so
_>LIBS += -L/usr/local/lib -lReport
_>...
_>
Возможно, не хватает сим линка libReport.so.2.0 -> libReport.so
Здравствуйте, Skorodum, Вы писали:
S>Здравствуйте, ivan_antonov, Вы писали:
S>Возможно, не хватает сим линка libReport.so.2.0 -> libReport.so
Символьные ссылки на библиотеку есть, их даже две, libReport.so->libReport.so.2.0, libReport.so.2.0->libReport.so.2.0.0, libReport.so.2.0.0 файл динамической библиотеки.
Здравствуйте, ivan_antonov, Вы писали:
_>Символьные ссылки на библиотеку есть, их даже две, libReport.so->libReport.so.2.0, libReport.so.2.0->libReport.so.2.0.0, libReport.so.2.0.0 файл динамической библиотеки.
И где все это находится? Судя по этому
ответу не там, где ищутся библиотеки во время запуска приложения.
Самый простой способ временного фикса: добавить путь к библиотекам в переменную окружения LD_LIBRARY_PATH.
Или посмотрите в сторону /etc/ld.so.conf (зависит от дистрибутива).
Здравствуйте, Skorodum, Вы писали:
S>Самый простой способ временного фикса: добавить путь к библиотекам в переменную окружения LD_LIBRARY_PATH. S>Или посмотрите в сторону /etc/ld.so.conf (зависит от дистрибутива).
S>Вот исчерпывающая информация по вопросу: S>Program Library HOWTO