Russian Qt Forum
Ноябрь 23, 2024, 21:13 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Проблема со слешами  (Прочитано 6946 раз)
zlatko
Гость
« : Ноябрь 28, 2005, 17:38 »

На некоторых компах после запуска проги( везде стоят ХР проф ) в дебажном окне я вижу следующее:

Цитировать

Failed to load library C:/cardreader_28.11/sqldrivers/qsqlpsql.dll!
        Error code 126 - The specified module could not be found.

QSqlDatabase: QPSQL7 driver not loaded
Failed to load library C:/cardreader_28.11/sqldrivers/qsqlpsql.dll!
        Error code 126 - The specified module could not be found.

Failed to load library C:/cardreader_28.11/sqldrivers/qsqlpsql.dll!
        Error code 126 - The specified module could not be found.

QSqlDatabase: available drivers:
Can't connect to database!
Error -1: Driver not loaded Driver not loaded


Ну что и понятно поскольку слешы стоят не в ту сторону. Попробывал поменять ручками следующим кодом но не получилося....
Может кто-нить сталкивался с подобным ?

Код:


*******
 
  QString strPath;
  strPath = a.applicationDirPath();
  strPath.replace( '/', '\\');
  bool ret = QDir::setCurrent( strPath );
  a.setLibraryPaths( strPath );
 
  QSqlDatabase *pDB=NULL;
  pDB = QSqlDatabase::addDatabase("QPSQL7");

*******



использую кт 3.3.3
Записан
zlatko
Гость
« Ответ #1 : Ноябрь 29, 2005, 12:14 »

хм проблема вроди в самой библиотеке...по крайней мере в анонсе к qt3.3.5 подобные вещы упоминаются....
может ктонить подскажет где скачать релиз по студію :roll:
Записан
Dendy
Гость
« Ответ #2 : Ноябрь 29, 2005, 22:33 »

Мммм... Хочу сразу разочаровать: никакой

Код:
  strPath.replace( '/', '\\');


не поможет, ибо при загрузке плагина QDir() перевернёт слеши как ему подскажет голос свыше (как правильно для данной ОС/компиллера).

А проблема собсна не в слешах. Проблема с системой плагинов Qt4. Драйвера SQL в Qt4 реализованы плагинами, которые загружаются на лету по месту требования, а не линкуются с основным кодом.

Заходим в документацию, читаем следующее:

Цитировать
But where is the plugins directory? When the application is run, Qt will first treat the application's executable directory as the pluginsbase. For example if the application is in C:\Program Files\MyApp and has a style plugin, Qt will look in C:\Program Files\MyApp\styles


Цитировать
Qt will also look in the directory specified by QLibraryInfo::location(QLibraryInfo::PluginsPath), which typically is located in QTDIR/plugins


Другой способ: использоваться функции:
QCoreApplication::addLibraryPath() и QCoreApplication::setLibraryPaths()

Грубо говоря, чтобы не добавлять код в программу нужно поместить соответствующий плагин ( qsqlpsql.dll ) в папку: sqldrivers которая будет лежать точно рядом с исполняемым файлом.

Плагины найдёшь здесь: QTDIR/plugins

 Веселый
Записан
Dendy
Гость
« Ответ #3 : Ноябрь 29, 2005, 23:10 »

P.S. В Qt 4.1 плагины можно слинковать статически и проблема отпадает сама собой.
Записан
zlatko
Гость
« Ответ #4 : Ноябрь 30, 2005, 13:18 »

ты сам хоть понял суть проблемы? Веселый
-я использую qt 3  не qt 4
-папка sqldrivers у меня существует и там есть необходимые драйвера
-на одних компах идет нормально а на других выдает вышеперечисленные сообшения
-http://qtforum.org/thread.php?threadid=15442&sid=
Записан
Dendy
Гость
« Ответ #5 : Ноябрь 30, 2005, 13:49 »

Уууупс.... оце тупанув...  :oops:  Веселый

Спробуй віддебажити процес завантаження плагинів. Якщо це робиться засібами Qt, то не повинно бути жодних проблем  :?
Записан
zlatko
Гость
« Ответ #6 : Ноябрь 30, 2005, 16:24 »

це можна..але в мене таке враження шо якшо я поставлю на необхідний комп студію і кт то воно запрацює :roll: ( аналогічно із моїм комппом)
треба десь дістати кт 3.3.5
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.14 секунд. Запросов: 21.