crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

11 страниц V  < 1 2 3 4 > »   
Ответить в данную темуНачать новую тему
> Qt и MySQL
acen83
  опции профиля:
сообщение 11.7.2008, 18:57
Сообщение #11


Студент
*

Группа: Участник
Сообщений: 23
Регистрация: 11.2.2008
Пользователь №: 91

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(ЙаМайскЫйПчОЛ @ 11.7.2008, 12:27) *
QSqlDatabase db = QSqlDatabase::addDatabase("MYSQL"); ???

очепятался :D

Цитата(ЙаМайскЫйПчОЛ @ 11.7.2008, 12:27) *
1) QT += sql (.pro)
2) #include <QtSql>
3) QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); !!!

Да. Не пашет. Два плагина видит, mysql не видит. :(


QSqlDatabase: QMYSQL driver not loaded
QSqlDatabase: available drivers: QSQLITE QODBC3 QODBC




Цитата(ЙаМайскЫйПчОЛ @ 11.7.2008, 12:27) *
? зачем? какая платформа, какой Qt ?

Затем что в идеале нужно чтобы плагин был встроен в библиотеку qt. Платформа windows, qt 4.4.0

Цитата(ViGOur @ 11.7.2008, 9:51) *
но после прочтения: Драйвера баз данных SQL -> Решение проблем и следования инструкциям у меня заработал плагин.


1) Убедитесь, что вы используете shared Qt библиотеку; вы не может использовать плагины в статической сборке.
Убедился - qt скачанная, уже скомпилированная под mingw

2) Убедитесь, что плагин в правильной директории. Для этого можно использовать QApplication::libraryPaths(), чтобы определить, где Qt ищет плагины.
Убедился - убирая другие плагины (dll-ки) из папки plugins\sqldrivers они исчезают из списка доступных при запуске программы

3) Убедитесь, что клиентские библиотеки DBMS доступны. Под Windows, вы можете использовать Visual Studio dependency walker.
Не понял что за клиентские библиотеки DBMS, так что убедится в их доступности не могу

Сообщение отредактировал acen83 - 11.7.2008, 19:03
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 12.7.2008, 9:30
Сообщение #12


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Цитата(acen83 @ 11.7.2008, 19:57) *
Не понял что за клиентские библиотеки DBMS, так что убедится в их доступности не могу
Да нет, ключевым словом тут является Visual Studio dependency walker. Посмотри все ли библиотеки твой exe'шник подгружает или какие не видит.

Еще вот цитатат от туда:
Цитата
Если у вас возникли проблемы с загрузкой плагинов, и вы видите ошибку вроде этой:

QSqlDatabase: QMYSQL driver not loaded
QSqlDatabase: available drivers: QMYSQLпроблема вероятно в том, что плагин имеет неправильный ключ сборки. Для отладки удалите соответствующую запись в $HOME/.qt/qt_plugins_(qtversion).rc файле.

После чего снова попытайтесь загрузить этот плагин, и вы получите более детальное описание ошибки.
$HOME для винды равен %USERPROFILE% если мне не изменяет память.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
evCo
  опции профиля:
сообщение 13.7.2008, 22:45
Сообщение #13


Студент
*

Группа: Новичок
Сообщений: 19
Регистрация: 12.7.2008
Пользователь №: 233

Спасибо сказали: 0 раз(а)




Репутация:   0  


Пользовался вот этой штукой как руководством.
http://www.crossplatform.ru/documentation/...ugin-on-windows

В дебаг режиме у меня почему-то не подключаються модули сети и sql, но для резлиза все работает. По-этому добавил в про файл CONFIG += release. Выполнил qmake, потом make. Написало:

C:\Qt\4.3.3\src\plugins\sqldrivers\mysql>make
mingw32-make -f Makefile.Release all
mingw32-make[1]: Entering directory `C:/Qt/4.3.3/src/plugins/sqldrivers/mysql'
g++ -enable-stdcall-fixup -Wl,-enable-auto-import -Wl,-enable-runtime-pseudo-rel
oc -Wl,-s -mthreads -Wl -shared -Wl,--out-implib,c:\Qt\4.3.3\plugins\sqldrivers\
libqsqlmysql4.a -o ..\..\..\..\plugins\sqldrivers\qsqlmysql4.dll tmp/obj/release
_shared/main.o tmp/obj/release_shared/qsql_mysql.o tmp/obj/release_shared/moc_qs
ql_mysql.o  -L"c:\Qt\4.3.3\lib" -L"c:\Qt\4.3.3\lib" tmp\obj\release_shared\qsqlm
ysql_resource_res.o C:\MySQL\lib\opt\libmysql.lib -lQtSql4 -lQtCore4
Creating library file: c:\Qt\4.3.3\plugins\sqldrivers\libqsqlmysql4.a
tmp/obj/release_shared/qsql_mysql.o(.text+0x4c):qsql_mysql.cpp: undefined refere
nce to `mysql_character_set_name@4'
tmp/obj/release_shared/qsql_mysql.o(.text+0x184):qsql_mysql.cpp: undefined refer
ence to `mysql_error@4'
tmp/obj/release_shared/qsql_mysql.o(.text+0x19a):qsql_mysql.cpp: undefined refer
ence to `mysql_errno@4'
tmp/obj/release_shared/qsql_mysql.o(.text+0x6d7):qsql_mysql.cpp: undefined refer
ence to `mysql_stmt_error@4'
tmp/obj/release_shared/qsql_mysql.o(.text+0x6eb):qsql_mysql.cpp: undefined refer
ence to `mysql_stmt_errno@4'
...
tmp/obj/release_shared/qsql_mysql.o(.text+0x7365):qsql_mysql.cpp: undefined refe
rence to `mysql_stmt_bind_param@8'
collect2: ld returned 1 exit status
mingw32-make[1]: *** [..\..\..\..\plugins\sqldrivers\qsqlmysql4.dll] Error 1
mingw32-make[1]: Leaving directory `C:/Qt/4.3.3/src/plugins/sqldrivers/mysql'
mingw32-make: *** [release-all] Error 2
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 13.7.2008, 22:56
Сообщение #14


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


По всей видимости у тебя не прописаны пути к mysql include файлам, проверь...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
evCo
  опции профиля:
сообщение 14.7.2008, 18:14
Сообщение #15


Студент
*

Группа: Новичок
Сообщений: 19
Регистрация: 12.7.2008
Пользователь №: 233

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(ViGOur @ 13.7.2008, 22:56) *
По всей видимости у тебя не прописаны пути к mysql include файлам, проверь...

Да прописано все... Я даж в про файл закинул пути к include и к библиотеке libmysql.lib. Но проблема таже
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
evCo
  опции профиля:
сообщение 14.7.2008, 19:45
Сообщение #16


Студент
*

Группа: Новичок
Сообщений: 19
Регистрация: 12.7.2008
Пользователь №: 233

Спасибо сказали: 0 раз(а)




Репутация:   0  


Попробовал пересобрать Qt с драфверавми под мускул.
Собирал по инструкции http://qtfaq.ru/tiki-index.php?page=compil...ingw+qt+windows. Только по отключал драйвера под некоторые БД.
...
bug_shared\qsqlquery.o kernel\qsqlquery.cpp
g++ -c -include tmp\obj\debug_shared\qt_pch.h -g -Wall -frtti -fexceptions -mthr
eads -DQT_SHARED -DQT_THREAD_SUPPORT -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_BUILD
_SQL_LIB -DQT_MAKEDLL -DQT_NO_CAST_TO_ASCII -DQT_ASCII_CAST_WARNINGS -DQT_44_API
_QSQLQUERY_FINISH -DQT3_SUPPORT -DQT_MOC_COMPAT -D_USE_MATH_DEFINES -DQT_NO_CAST
_FROM_ASCII -DQT_DLL -DQT_CORE_LIB -I"..\..\include\QtCore" -I"..\..\include\QtC
ore" -I"..\..\include" -I"..\..\include\QtSql" -I"tmp" -I"c:\Qt\4.3.3\include\Ac
tiveQt" -I"tmp\moc\debug_shared" -I"." -I"..\..\mkspecs\win32-g++" -o tmp\obj\de
bug_shared\qsqldatabase.o kernel\qsqldatabase.cpp
In file included from kernel\qsqldatabase.cpp:49:
kernel\/../drivers/mysql/qsql_mysql.h:47:19: mysql.h: No such file or directory
In file included from kernel\qsqldatabase.cpp:49:
kernel\/../drivers/mysql/qsql_mysql.h:98: error: expected `)' before '*' token
In file included from kernel\qsqldatabase.cpp:77:
kernel\/../drivers/ibase/qsql_ibase.h:43:19: ibase.h: No such file or directory
In file included from kernel\qsqldatabase.cpp:77:
kernel\/../drivers/ibase/qsql_ibase.h:79: error: expected `)' before "connection
"
mingw32-make[2]: *** [tmp/obj/debug_shared/qsqldatabase.o] Error 1
mingw32-make[2]: Leaving directory `C:/Qt/4.3.3/src/sql'
mingw32-make[1]: *** [debug-all] Error 2
mingw32-make[1]: Leaving directory `C:/Qt/4.3.3/src/sql'
mingw32-make: *** [sub-sql-make_default] Error 2


Сообщение отредактировал evCo - 14.7.2008, 19:46
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 15.7.2008, 8:25
Сообщение #17


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


У нас есть свое описание сбоки: Сборка Qt с использованием MinGW32
Ну и общее: Установка библиотеки Qt - Общее
;)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 15.7.2008, 17:53
Сообщение #18


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


заметь строку:
-I C:\mysql\include
нужно писать без пробела:
-IC:\mysql\include

Цитата(acen83 @ 8.7.2008, 23:53) *
скомпилировал плагин, в папке plugins\sqldrivers появился файл qsqlmysql4.dll - вроде все как положено.

а файл qsqlmysql4.lib или qsqlmysql4.a появился?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 15.7.2008, 21:17
Сообщение #19


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


----
еще мануальчик на тему мускула:
Building the QMYSQL plugin on Windows using MinGW
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
evCo
  опции профиля:
сообщение 15.7.2008, 21:57
Сообщение #20


Студент
*

Группа: Новичок
Сообщений: 19
Регистрация: 12.7.2008
Пользователь №: 233

Спасибо сказали: 0 раз(а)




Репутация:   0  


Что я только не делал чтоб поставить мускул. Поставил новый MinGW (5.1.4, до этого стоял 3.4.5). Пробовал собирать три разные версии Qt (4.3.2-4.3.4). 100 раз менял конфиги, но сборка всегда заканчиваеться так:

...
In file included from kernel\qsqldatabase.cpp:56:
kernel\../drivers/mysql/qsql_mysql.h:54:19: mysql.h: No such file or directory
In file included from kernel\qsqldatabase.cpp:56:
kernel\../drivers/mysql/qsql_mysql.h:105: error: expected `)' before '*' token
mingw32-make[2]: *** [tmp/obj/debug_shared/qsqldatabase.o] Error 1
mingw32-make[2]: Leaving directory `C:/Qt/4.3.4/src/sql'
mingw32-make[1]: *** [debug-all] Error 2
mingw32-make[1]: Leaving directory `C:/Qt/4.3.4/src/sql'
mingw32-make: *** [sub-sql-make_default-ordered] Error 2

Цитата(Litkevich Yuriy @ 15.7.2008, 21:17) *
----
еще мануальчик на тему мускула:
Building the QMYSQL plugin on Windows using MinGW

Вот что вышло
...
C:\MinGW\bin\..\lib\gcc\mingw32\3.4.5\..\..\..\..\mingw32\bin\ld.exe: cannot fin
d -lQtSqld4
collect2: ld returned 1 exit status
mingw32-make[1]: *** [..\..\..\..\plugins\sqldrivers\qsqlmysqld4.dll] Error 1
mingw32-make[1]: Leaving directory `C:/Qt/4.3.4/src/plugins/sqldrivers/mysql'
mingw32-make: *** [debug-all] Error 2


Сообщение отредактировал evCo - 15.7.2008, 22:11
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

11 страниц V  < 1 2 3 4 > » 
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


7 чел. читают эту тему (гостей: 7, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 27.12.2024, 1:31