Проблема развертывания приложения QT / SQLITE - PullRequest
1 голос
/ 24 мая 2011

Я написал приложение на c ++ с QT, обеспечивающим графический интерфейс и подключение к базе данных, а выбранный драйвер - SQLITE. Когда я работал над собственной системой (обновленной до последней версии Ubuntu desctop 11), где установлены Qt4 SDK и sqlite, все работало. Однако попытка запустить мой исполняемый файл на целевом ПК завершилась неудачей.

Вот мой профессиональный файл:

#-------------------------------------------------
#
# Project created by QtCreator 2011-05-22T09:15:05
#
#-------------------------------------------------

QT       += core gui sql

TARGET = Peacecourse
TEMPLATE = app


SOURCES += main.cpp\
        mainwindow.cpp \
    goodtable.cpp

HEADERS  += mainwindow.h \
    peaceCon.h \
    goodtable.h

FORMS    += mainwindow.ui \
    goodtable.ui

CONFIG   += static
#wince*: DEPLOYMENT_PLUGIN += qsqlite

Для развертывания все, что я делал, это копировал мой исполняемый файл (как это работало в моей собственной системе). В результате я получил сообщение об отсутствии драйвера QSQLITE, и, естественно, программа больше не запускалась.

Некоторые фрагменты информации о целевой системе: насколько я могу судить, это Ubuntu, довольно старая; У меня нет привилегий суперпользователя, и установка QT совершенно не обсуждается. Однако у него есть Sun Virtual Box, и в принципе создание желаемой среды на виртуальной машине возможно. Однако (я виню там плохое оборудование), когда я пытался это сделать, я был остановлен на этапе копирования файла установки QT в desctop виртуальной машины из-за ошибки файловой системы.

Другое дело, там нет QT, но установлен sqlite.

Как я могу продемонстрировать работу моего приложения в описанной мной системе? Как я могу создать единый исполняемый дистрибутив моего приложения?

UPDATE

Другая проблема возникла в Ubuntu 11.04 'clen' (без каких-либо обновлений, qt или sqlite). После попытки запустить приложение я получаю сообщение:

error while loading shared libraries: libQtSql.so.4: cannot open shared object file: No such file or directory

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

1 Ответ

1 голос
/ 24 мая 2011

Вам также необходимо развернуть плагин sqlite: он находится в плагинах / sqlrivers в вашем sdk

Скорее всего, вы захотите взглянуть на эту страницу, о сборщиках сборки (см. Общий раздел)

Если я правильно помню, достаточно развернуть этот файл во вложенной папке с правильным именем.

EDIT

Вы можете взглянуть на Официальный документ Qt , чтобы получить четкое представление о том, как выполняется поиск плагина во время выполнения. По сути, вам, возможно, придется вызвать QCoreApplication::addLibraryPath() с вашим двоичным путем и развернуть плагин в подпапке с именем sqldrivers. Просто поместить папку в текущий путь будет недостаточно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...