Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [QT4] Драйвер ibase зависит от пути компиляции 
:(
    Опции темы
JekaZZ
Дата 22.12.2007, 21:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 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?
Что делать? можно ли скопмилировать драйвер в статическую библиотеку?
PM MAIL   Вверх
JekaZZ
Дата 22.12.2007, 22:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 161
Регистрация: 6.10.2005

Репутация: нет
Всего: 3



Времени нет, поэтому сделал через ....то, через что обычно smile.
Нашел в файле QtCored4.dll все ссылки на папку qt в  и заменил их на .\
Драйвер положил, соответственно, в папку .\plugins\sqldrivers\
PM MAIL   Вверх
archimed7592
Дата 23.12.2007, 01:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 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
PM Jabber   Вверх
JekaZZ
Дата 24.12.2007, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 161
Регистрация: 6.10.2005

Репутация: нет
Всего: 3



Новая проблема. Драйвер не грузится на машине, где нет VS. Программа не ругается ни на какие dll VC, так как таскает их с собой, но драйвер ibase не грузится. 
Причем, если стоит не 2005-я, а 6-я VS, то работает. Посмотрел зависимости qsqlibased.dll - нашел зависимоть от Msvcrtd.dll, скопировал в папку программы - не помогло. Посмотрел файловым монитором к чему обращается программа на машине, где работае и где не работает - результат одинаковый -  и там и там не находит некоторые (одни и те же файлы типа манифестов и некоторых dll) файлы. Но при этом же работает на одной!!!
Интересно обращается к qsqlibased.dll. Вот что показал монитор:
1) там, где работает:
user posted image
2) где не работает:
user posted image
user posted image

Добавлено через 10 минут и 52 секунды
 smile 
Я просто улыбаюсь со всей этой системы!
Теперь драйвер ищется не в .\plugins\sqldrivers\ , а в \.sqldrivers\ . Почему так и от чего зависит- история умалчивает
PM MAIL   Вверх
archimed7592
Дата 24.12.2007, 15:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 11
Всего: 93



Цитата(JekaZZ @  24.12.2007,  13:58 Найти цитируемый пост)
Msvcrtd.dll, скопировал в папку программы - не помогло.

Поиск спасёт отца русской демократии.


Цитата(JekaZZ @  24.12.2007,  13:58 Найти цитируемый пост)
Теперь драйвер ищется не в .\plugins\sqldrivers\ , а в \.sqldrivers\ . Почему так и от чего зависит- история умалчивает 

Ну почему же. Есть определённые правила поиска плагинов 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
PM Jabber   Вверх
just_geek
Дата 23.1.2008, 14:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 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
PM MAIL   Вверх
archimed7592
Дата 23.1.2008, 15:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 11
Всего: 93



just_geek, а симптомы какие?

Цитата(JekaZZ @  24.12.2007,  13:58 Найти цитируемый пост)
Теперь драйвер ищется не в .\plugins\sqldrivers\ , а в \.sqldrivers\ . Почему так и от чего зависит- история умалчивает 

JekaZZ, если Вас до сих пор интересуют причины, то я похоже догадываюсь:
Цитата(JekaZZ @  22.12.2007,  22:02 Найти цитируемый пост)
Нашел в файле QtCored4.dll все ссылки на папку qt в  и заменил их на .\
По всей видимости в этом файле была ссылка some\path\to\qt\plugins\, который Вы заменили на .\, а не на .\plugins smile.


--------------------
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
PM Jabber   Вверх
just_geek
Дата 23.1.2008, 15:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 309
Регистрация: 13.12.2007

Репутация: 7
Всего: 10



Симптом: Driver not loaded

Да и список доступных драйверов пуст.
PM MAIL   Вверх
archimed7592
Дата 23.1.2008, 15:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 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
PM Jabber   Вверх
just_geek
Дата 23.1.2008, 15:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 309
Регистрация: 13.12.2007

Репутация: 7
Всего: 10



решил проблему

в sqlite.pro надо было CONFIG -= embed_manifest_dll и пересобрать. Актуально только для VC++ 2005 и выше.
PM MAIL   Вверх
archimed7592
Дата 23.1.2008, 19:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Архимед
****


Профиль
Группа: Завсегдатай
Сообщений: 2531
Регистрация: 12.6.2004
Где: Moscow

Репутация: 11
Всего: 93



Ух как smile. Где рецепт вычитал?


--------------------
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
PM Jabber   Вверх
just_geek
Дата 24.1.2008, 09:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 309
Регистрация: 13.12.2007

Репутация: 7
Всего: 10



В ассистенте: страничка "Deploying an Application on Qt/Windows"
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.0736 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.