Название: [решено] Не работает qt.conf Отправлено: lzv от Апрель 12, 2013, 18:44 Здравствуйте.
Система windows xp, Qt версии 4.8. Пытаюсь перенести приложение на компьютер без Qt. Но в приложении используется SQLite. Если положить файл qsqlite4.dll в тот же каталог, где он был при компиляци программы (С:\Qt\4.8.4\plugins\sqldrivers\), то программа работает. Во всех других случаях - если положить его рядом с exe-шником, либо в подкаталог sqldrivers, либо вообще в plugins\sqldrivers - не работает. Пробую использовать qt.conf, но он не подхватывается. Ложил его рядом с exe-ником, а так же пробовал поместить в ресурсы в префикс /qt/etc/ но не работает. Проверяю пути с помощью QLibraryInfo::location, они не меняются. Подскажите пожалуйста, как добраться до этого пути загрузки плагинов, где его поменять. Название: Re: Не работает qt.conf Отправлено: Alex Custov от Апрель 12, 2013, 19:21 что-то у тебя не так, у всех sqlite работает, а у тебя нет. Правильный подкаталог, куда класть qsqlite - sqldrivers/. Вся остальная инфа бесполезна, опиши подробно как и что ты делаешь.
Название: Re: Не работает qt.conf Отправлено: lzv от Апрель 12, 2013, 20:56 Вот содержимое файла main.cpp:
Код: #include <QtGui> Содержимое qt.conf, например такое: Код: [Paths] Включаю файл qt.conf в ресурсы по префиксу /qt/etc/ Компилирую, получаю exe, копирую его в другую папку, с ним ложу QtCore4.dll, QtGui4.dll и QtSql4.dll. Затем запускаю. Получаю файл llog.txt: Код: PrefixPath: C:\Qt\4.8.4 Удаляю llog.txt. Ложу qt.conf рядом с exe-шником, запускаю. Содержимое llog.txt то же самое. Удаляю llog.txt. Удаляю ресурсы, компилирую. Заменяю exe-шник, файл qt.conf рядом с ним. Запускаю. Содержимое llog.txt то же самое. Название: Re: Не работает qt.conf Отправлено: Alex Custov от Апрель 12, 2013, 21:01 не нужен тебе qt.conf для sqlite плагина, нужно дебажить почему он на целевой системе не погружается. Компилятор mingw? Покажи структуру каталогов программы на целевой системе.
Название: Re: Не работает qt.conf Отправлено: lzv от Апрель 12, 2013, 21:09 Компилятор VS 2010.
Не подгружается, потому что qsqlite4.dll ищется в каталоге, где он был при компиляции программы. Если его туда положить, то все работает. Структура простая - все файлы в одном каталоге. Название: Re: Не работает qt.conf Отправлено: Bepec от Апрель 12, 2013, 21:16 Я те по секрету скажу. То, что он ищет плагины ещё и по qt.conf не значит, что пути для приложения изменяются :)
Должно работать. Нарушить эту часть Qt практически невозможно :D Скинь файл программы с дллками и дллкой плагины, вот и посмотрим что не работает :D Название: Re: Не работает qt.conf Отправлено: Alex Custov от Апрель 12, 2013, 21:17 Не подгружается, потому что qsqlite4.dll ищется в каталоге, где он был при компиляции программы. Нет, путь где он был при компиляции - это один из путей поиска, но не единственный. Структура простая - все файлы в одном каталоге. плагин на целевой системе лежит в подкаталоге sqldrivers? Название: Re: Не работает qt.conf Отправлено: lzv от Апрель 12, 2013, 21:26 плагин на целевой системе лежит в подкаталоге sqldrivers? Пробовал по разному - в папке exe-шника, в sqldrivers, в plugins\sqldrivers. Не работает ни в одном случае. Название: Re: Не работает qt.conf Отправлено: lzv от Апрель 12, 2013, 21:38 Попробовал взять QtCore4.dll, QtGui4.dll и QtSql4.dll не из дистрибутива Qt а из дистрибутива Qt Creator. Компилировал программу в прежних условиях, эти dll нужны только при запуске уже готового exe-файла.
После замены dll пути стали такими: Код: PrefixPath: q:\install\qt-4.8.4 (Хотя вроде я не замечал в системе диска q: Но те что начинаются с C: - существуют) qt.conf так же ни на что не влияет. И так же пробовал по разному положить драйвер. Видимо как то в этих dll прописывается путь при установке Qt и Creator-а. ??? Название: Re: Не работает qt.conf Отправлено: Bepec от Апрель 12, 2013, 22:05 Я те по секрету скажу. То, что он ищет плагины ещё и по qt.conf не значит, что пути для приложения изменяются :) Должно работать. Нарушить эту часть Qt практически невозможно :D Скинь файл программы с дллками и дллкой плагины, вот и посмотрим что не работает :D Название: Re: Не работает qt.conf Отправлено: lzv от Апрель 13, 2013, 01:30 Скачать можно здесь https://github.com/lzv/qtimer/tree/master/installs
файл "qtimer for windows xp 32 bit.7z" Там dll из дистрибутива самой Qt. Каталогом выше сами исходники. Без драйвера сама программа запускается, он задействуется при открытии файла данных и работе с ним. Название: Re: Не работает qt.conf Отправлено: Bepec от Апрель 13, 2013, 08:40 http://spolab.ru/blog/80-neponyatki-s-plaginami-qt
Название: Re: Не работает qt.conf Отправлено: lzv от Апрель 13, 2013, 16:14 addLibraryPath тоже не помогает. Устанавливал как относительный путь (с точкой) так и абсолютный (получаемый через QCoreApplication::applicationDirPath()).
Так же пробовал setLibraryPaths. Название: Re: Не работает qt.conf Отправлено: Serr500 от Апрель 13, 2013, 17:02 http://files.mail.ru/86D9A947688A4AC58A63D14A84788E0C (http://files.mail.ru/86D9A947688A4AC58A63D14A84788E0C)
Собрано, правда, не MSVC, а MinGW, но это несущественно. Там же парочка исходных файлов, которые я изменил. Если вкратце, то проблемы из-за того, что у Вас переменные типа QSqlDatabase объявлены как static. В этом случае они инициализируются слишком рано и все попытки поиска плагинов в других каталогах происходят уже после их инициализации. Я перенёс инициализацию в конструктор и всё заработало. Название: Re: Не работает qt.conf Отправлено: lzv от Апрель 13, 2013, 19:45 Serr500 спасибо, работает!
Спасибо так же и все остальным, кто пытался помочь :) |