![]() |
|
|
![]()
|
|
| JekaZZ |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 161 Регистрация: 6.10.2005 Репутация: нет Всего: 3 |
Хелп!
поставил qt4.2.2 и работаю с ней в VC2005. все бы нормально, пока пытаешься запустить приложение без QT - переименовываю папку QT и приолжение не видит qsqlibased.dll, даже если он лежит рядом с exe. предполагаю, что такое будет на машине с неустановленной QT. Сносил QT, удалял из переменных QTDIR, удалял ветки реестра Trolltech и те, в которых встречается путь к папке qt, устанавливал qt в другую папку. Приложение все равно ищет dll в папке %QTDIR%\plugins\sqldrivers\., где %QTDIR% - папка, в которую qt была установлена сначала. Копилил драйвер так: > qmake > nmake Единственное, где нашел ссылки на этот путь - файл QtCored4.dll, который использует приложение. Что еще примечательно, компилировался дравер на другой машине, где qt была установлена по другому пути. Но здесь же работает в первом варианте %QTDIR%. Может путь, по которому ищется dll, берется из какого-либо кеша или из QtCored4.dll? Что делать? можно ли скопмилировать драйвер в статическую библиотеку? |
|||
|
||||
| JekaZZ |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 161 Регистрация: 6.10.2005 Репутация: нет Всего: 3 |
Времени нет, поэтому сделал через ....то, через что обычно
Нашел в файле QtCored4.dll все ссылки на папку qt в и заменил их на .\ Драйвер положил, соответственно, в папку .\plugins\sqldrivers\ |
|||
|
||||
| archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 11 Всего: 93 |
JekaZZ, я в своё время интересовался этой же проблемой чуть в другом контексте.
В общем, суть в том, что ты всё правильно предполагал: будет работать на машине с Qt, установленной в другом месте или не установленной вообще. Если место дислокации не совпадает с прошитым в dll'ку путём, то проблемы возникают только во время разработки(в частности, с qmake). Одно из красивых решений этой проблемы - junction(правда, поможет не всегда). -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
| JekaZZ |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 161 Регистрация: 6.10.2005 Репутация: нет Всего: 3 |
Новая проблема. Драйвер не грузится на машине, где нет VS. Программа не ругается ни на какие dll VC, так как таскает их с собой, но драйвер ibase не грузится.
Причем, если стоит не 2005-я, а 6-я VS, то работает. Посмотрел зависимости qsqlibased.dll - нашел зависимоть от Msvcrtd.dll, скопировал в папку программы - не помогло. Посмотрел файловым монитором к чему обращается программа на машине, где работае и где не работает - результат одинаковый - и там и там не находит некоторые (одни и те же файлы типа манифестов и некоторых dll) файлы. Но при этом же работает на одной!!! Интересно обращается к qsqlibased.dll. Вот что показал монитор: 1) там, где работает: 2) где не работает: Добавлено через 10 минут и 52 секунды Я просто улыбаюсь со всей этой системы! Теперь драйвер ищется не в .\plugins\sqldrivers\ , а в \.sqldrivers\ . Почему так и от чего зависит- история умалчивает |
|||
|
||||
| archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 11 Всего: 93 |
Поиск спасёт отца русской демократии.
Ну почему же. Есть определённые правила поиска плагинов Qt и, если мне не изменяет память, они очень даже хорошо документированны в assistant'е. -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
| just_geek |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 309 Регистрация: 13.12.2007 Репутация: 7 Всего: 10 |
решил не создавать похожую тему. Такая же проблема только с qsqlite драйвером.
Перепробовал все варианты :( не хочет на другой машине драйвер грузится и все тут. Плагины валяются в path_to_myapp/plugins 1) копировал драйвер в папку c:\qt\4.3.3\plugins\sqldrivers\ 2) устанавливал QT_PLUGIN_PATH=path_to_myapp/plugins 3) создавал qt.conf 4) QApplication::setLibraryPath 5) QApplication::addLibraryPath На моей машине нормально работает, на другой нет... Уже не знаю, что делать. p.s. Qt 4.3.3 Open Source Edition скомпилирована на VC++ 2008 Express Edition. p.p.s. все переменные окружения относящиеся к qt на свой машине снес. Это сообщение отредактировал(а) just_geek - 23.1.2008, 14:55 |
|||
|
||||
| archimed7592 |
|
||||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 11 Всего: 93 |
just_geek, а симптомы какие?
JekaZZ, если Вас до сих пор интересуют причины, то я похоже догадываюсь:
-------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
||||
|
|||||
| just_geek |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 309 Регистрация: 13.12.2007 Репутация: 7 Всего: 10 |
Симптом: Driver not loaded
Да и список доступных драйверов пуст. |
|||
|
||||
| archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 11 Всего: 93 |
Недавно такая же проблема разрешилась путём вкомпилирования драйвера в Qt(т.е. компилирования НЕ плагина).
Если такое решение не устраивает, то можно попытаться выяснить в чём дело. Надеюсь, что Вы уверены, что проблема именно в драйвере(т.е. без попыток использования БД программа запускается), в таком случае качаем dependency walker и смотрим каких библиотек не хватает плагину и/или самому приложению. Плагин должен лежать в папке path_to_exe\plugins\sqldrivers. Смотреть зависимости желательно на том компьютере, на котором не запускается(я предпочитаю делать это в девственно чистой винде на виртуальной машине). -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
| just_geek |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 309 Регистрация: 13.12.2007 Репутация: 7 Всего: 10 |
решил проблему
в sqlite.pro надо было CONFIG -= embed_manifest_dll и пересобрать. Актуально только для VC++ 2005 и выше. |
|||
|
||||
| archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 11 Всего: 93 |
Ух как
-------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
| just_geek |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 309 Регистрация: 13.12.2007 Репутация: 7 Всего: 10 |
В ассистенте: страничка "Deploying an Application on Qt/Windows"
|
|||
|
||||
![]()
|
| Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |