crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Программа не находит плагин sqlite
korwru
  опции профиля:
сообщение 5.4.2013, 0:57
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 4
Регистрация: 24.2.2013
Пользователь №: 3726

Спасибо сказали: 0 раз(а)




Репутация:   0  


Компилирую. Всё запускается на машине с установленным QT, а на других машинах не запускается - выводит runtime error.
Причина в том, что программа ищет плагин sqlite только по пути, где находится QT. В папке с программой почему-то не ищет.

В папку с программой помимо DLL также положил
/platforms/qwindows.dll
/sqldrivers/qsqlite.dll

Смотрел зависимости с помощью ProcessExplorer.

Подскажите, как сделать, чтобы на других машинах программа запускалась?

Содержимое pro файла:
 
QT              += core gui sql
QMAKE_CXXFLAGS  += -std=c++11

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = wolq-qn
TEMPLATE = app


SOURCES += main.cpp\
        quicknotes.cpp \
        note.cpp \
        cdatabase.cpp \
        qnview.cpp \
    db02.cpp

HEADERS  += quicknotes.h \
    note.h \
    cdatabase.h \
    version.h \
    qnview.h \
    db02.h

FORMS    += quicknotes.ui \
    qnview.ui


Исходники моей программы: https://bitbucket.org/korwru/wolq-qn/src
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
lanz
  опции профиля:
сообщение 5.4.2013, 9:55
Сообщение #2


Старейший участник
****

Группа: Участник
Сообщений: 690
Регистрация: 28.12.2012
Пользователь №: 3660

Спасибо сказали: 113 раз(а)




Репутация:   8  


Можно проверить что в пути к папке программы нет русских букв/пробелов (точно не вспомню но по моему была такая проблема).

У меня когда не находил sqlite он просто не мог создать соединение к БД, runtime error точно из-за него? Например дебажные версии библиотек (c d на конце), не?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
korwru
  опции профиля:
сообщение 6.4.2013, 0:06
Сообщение #3


Новичок


Группа: Новичок
Сообщений: 4
Регистрация: 24.2.2013
Пользователь №: 3726

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(lanz @ 5.4.2013, 10:55) *
Можно проверить что в пути к папке программы нет русских букв/пробелов (точно не вспомню но по моему была такая проблема).

У меня когда не находил sqlite он просто не мог создать соединение к БД, runtime error точно из-за него? Например дебажные версии библиотек (c d на конце), не?


Да, runtime error точно из-за него. Смысл примерно следующий - если соединение с базой выношу в отдельный класс - то прога работает только на машине с установленным QT и пути берутся только из него.

Если соединение с базой оставляю в классе с виджетом - например в стандартном примере MainWindow::MainWindow то тоже начинают подхватываться плагины, находящиеся в директории с программой.

На оффсайте ещё продублировал вопрос http://qt-project.org/forums/viewthread/26444/


Проблема почему-то с классом cDataBase::cDataBase() - исходники в 1 сообщении.

Из-за него обращение к папке с плагинами идёт только в директорию с установленным QT. Если соединение с базой напрямую прописать в QuickNotes::QuickNotes, то программа начинает искать плагины в т.ч. и в папке с программой sqldrivers.

В итоге на ОС с QT - работает всегда. На ОС без QT работает только, если соединение перенести в quicknotes.cpp
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
lanz
  опции профиля:
сообщение 8.4.2013, 9:00
Сообщение #4


Старейший участник
****

Группа: Участник
Сообщений: 690
Регистрация: 28.12.2012
Пользователь №: 3660

Спасибо сказали: 113 раз(а)




Репутация:   8  


cDataBase qnDb;

Инициализируется ДО того как создан объект QApplication, который создается в main.
Скорее всего из-за этого и падает.

Сделайте cDataBase членом класса QuickNotes.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 6.2.2025, 3:25