Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: работа firebird embedded
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt Разработка баз данных
vanvo
На компе, где стоит сервер программа работает. При переносе на ноут (на котором сервера firebird нет) программа не работает. Распаковываю Firebird-2.1.1.17910-0_Win32_embed в папку с программой, fbembed.dll переименовываю на fbclient.dll (потом пытался и на gds32.dll). В программе убираю строку setHostName(...). Программа все равно не работает. Что еще я забыл сделать, подскажите...
Хм... Ставлю на комп embedded, выключаю сервер, программа работает. Значит каких-то либов не хватает...
SABROG
Скачай Dependency Walker, через него запускай программу, он тебе выведет чего не хватает.
vanvo
С помощью Dependency Walker узнал, что не хватает msjava.dll, ее добавил с компа. Но еще ругается на mpr.dll. Красным подсвечивает функцию WNetRestoreConnectionA (Warning: At least one module has an unresolved import due to a missing export function in a delay-load dependent module). Пробовал заменить dll с компа, не помогло :(
На компе с выключенным сервером и firebird embedded Dependency Walker выдает ту же ошибку, но программа все-равно работает...
Хм... Папка с программой, бд и всеми дллками была на рабочем столе - не работало, перенес в мои документы - заработало... В чем разница? :)
SABROG
Вполне может быть, что из-за русского названия "Рабочий стол", либо из-за пробелов. Хотя, если честно, то я не наблюдал, чтобы Qt на этом спотыкалась. А вообще бывают необязательные .dllки. Я кстати так остатки вируса нашел на компьютере, когда увидел, что kernel32.dll требует странную .dll. Погуглив понял, что требуемая .dll - часть вируса. Не знаю почему, но антивирусы зависимость не вылечили, но .dll удалили. По сути если её туда спецом воткнуть, то она активизируется.
vanvo
Оказывается не все так просто... На некоторых машинах программа со встроенным сервером жар-птицы работает нормально, на некоторых бд не открывается. Результаты Dependency одинаковые: везде нет mpr.dll. Но как бы наличие этой дллки не критично (в ФАКе оффсайта Dependency вроде прочитал). В чем можт быть еще причина?

Почему теперь на форуме нельзя исправлять первый пост в теме? И не только первый...
Litkevich Yuriy
Цитата(vanvo @ 12.4.2009, 19:40) *
И не только первый...
однако ты этот пост исправил
vanvo
Цитата(Litkevich Yuriy @ 12.4.2009, 16:56) *
однако ты этот пост исправил

У меня только на этом посте (из всех моих на форуме) есть кнопка "изменить".
Теперь и на этом тоже. Почему то прошлые мои посты форум не хочет относить ко мне :)
Litkevich Yuriy
Цитата(vanvo @ 12.4.2009, 19:59) *
Почему то прошлые мои посты форум не хочет относить ко мне
пиши сюда, админам.
vanvo
Litkevich Yuriy, а по поводу моей проблемы никаких идей нет?
Litkevich Yuriy
vanvo, я со встраваемым птицем ещё не сталкивался.

Цитата(vanvo @ 21.3.2009, 19:33) *
На компе, где стоит сервер программа работает. При переносе на ноут (на котором сервера firebird нет) программа не работает.
там где нет сервера, у тебя БД лежит? или БД в другом месте? Т.е. Встраиваемый Птиц в действительности должен выполнять роль клиента или сервера?
vanvo
Цитата(Litkevich Yuriy @ 12.4.2009, 20:50) *
там где нет сервера, у тебя БД лежит? или БД в другом месте? Т.е. Встраиваемый Птиц в действительности должен выполнять роль клиента или сервера?

Этот вопрос я решил недостающими либами. Новый вопрос находится в середине темы, а именно:
Цитата(vanvo @ 12.4.2009, 16:40) *
На некоторых машинах программа со встроенным сервером жар-птицы работает нормально, на некоторых бд не открывается. Результаты Dependency одинаковые: везде нет mpr.dll. Но как бы наличие этой дллки не критично (в ФАКе оффсайта Dependency вроде прочитал). В чем можт быть еще причина?

П.С. Еще прошу, если возможно, убрать пометку [решено] у темы.
Litkevich Yuriy
Цитата(vanvo @ 13.4.2009, 0:04) *
на некоторых бд не открывается.
ну а всякие сообщения об ошибках ты записываешь? что говорит птиц?
И к стати как ты его используешь? через драйвер Qt?
vanvo
Вывд ошибки сделал недавно, посмотрю, что он выдаст на неработающих машинах. Птицу использую через драйвер Qt
QSqlDatabase db = QSqlDatabase::addDatabase("QIBASE");
и погнали :)
Вывод ошибки должен выглядеть примерно так:
QMessageBox::critical(this, tr("Attention"), db.lastError().databaseText() +  "\n" + db.lastError().driverText());
?
Litkevich Yuriy
Цитата(vanvo @ 13.4.2009, 16:16) *
Вывод ошибки должен выглядеть примерно так:
ну и как же она выглядит эта ошибка? От кода программы мне толку никакого.
vanvo
Цитата(Litkevich Yuriy @ 13.4.2009, 13:26) *
ну и как же она выглядит эта ошибка?

Цитата(vanvo @ 13.4.2009, 13:16) *
Вывд ошибки сделал недавно, посмотрю, что он выдаст на неработающих машинах.
vanvo
Цитата(vanvo @ 13.4.2009, 14:19) *
ну и как же она выглядит эта ошибка?

Driver not loaded
Litkevich Yuriy
Цитата(vanvo @ 14.4.2009, 21:54) *
Driver not loaded
вот это уже что-то. Драйвер QIbase, с собой таскаешь?
vanvo
Цитата(Litkevich Yuriy @ 14.4.2009, 18:57) *
Драйвер QIbase, с собой таскаешь?

Да, qsqlibase4.dll лежит в папке %ProgramDirectory%\sqldrivers
AD
Надо такой путь: <QtDirectory>\plugins\sqldrivers.
А еще не забыть написать в коде следующее:
QApplication a(argc, argv);
QDir dir(qApp -> applicationDirPath() + QDir::separator() + "plugins" + QDir::separator());
QStringList list_plugins;
list_plugins << dir.absolutePath() << a.libraryPaths();
a.setLibraryPaths(list_plugins);
vanvo
Цитата(AD @ 14.4.2009, 19:11) *
Надо такой путь: <QtDirectory>\plugins\sqldrivers.

qsqlibase4.dll тоже там лежит. Я имею ввиду при переносе программы на компьютер без Qt qsqlibase4.dll лежит в %ProgramDirectory%\sqldrivers
А почему в коде надо писать "plugins", а не "sqldrivers"?
molchanoviv
почитай это
vanvo
molchanoviv, я всегда дллку для работы с бд клал просто в папку %ProgramDirectory%\sqldrivers и никаких проблем не возникало...
AD
Цитата
qsqlibase4.dll тоже там лежит. Я имею ввиду при переносе программы на компьютер без Qt qsqlibase4.dll лежит в %ProgramDirectory%\sqldrivers
А почему в коде надо писать "plugins", а не "sqldrivers"?

Я имел в виду, что <QtDirecory> - это собственно папка, где находится ваш exe-файл. Название неудачное подобрал. Попробуйте так, как я прописал. Что-то там вшито в само Qt!!!!
vanvo
molchanoviv, AD, спасибо. Завтра проверю на "чистых" машинах.
vanvo
Все работает! Большое спасибо всем, кто мне помогал :)
Litkevich Yuriy
Цитата(vanvo @ 15.4.2009, 19:31) *
Все работает! Большое спасибо всем, кто мне помогал
и в чём в итоге было дело, как решил проблему?
vanvo
Этим:
   QStringList list_path;    
    QDir dir = QDir(app.applicationDirPath()+"/QtPlugins/");    
    list_path << dir.absolutePath () << app.libraryPaths ();    
    app.setLibraryPaths( list_path  );

Только вопрос остался: почему на некоторых машинах и без этого кода драйвер нормально находится?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.