Название: QT + MySQL Отправлено: hamlo от Сентябрь 16, 2009, 09:21 Изибтая уже тема
http://wiki.qtcentre.org/index.php?title=Building_the_QMYSQL_plugin_on_Windows_using_MinGW Собирал так в результате вид mysql.pro Код: QT += sql И полный вывод компилятора Цитировать Running build steps for project mysql... Configuration unchanged, skipping QMake step. Starting: D:/Qt/2009.03/mingw/bin/mingw32-make.exe -w mingw32-make: Entering directory `D:/Qt/2009.03/qt/src/plugins/sqldrivers/mysql' D:/Qt/2009.03/mingw/bin/mingw32-make -f Makefile.Debug mingw32-make[1]: Entering directory `D:/Qt/2009.03/qt/src/plugins/sqldrivers/mysql' g++ -c -g -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I"..\..\..\..\include\QtCore" -I"..\..\..\..\include\QtGui" -I"..\..\..\..\include" -I"." -I"d:\MySQL\include" -I"..\..\..\sql\kernel" -I"..\..\..\..\include\ActiveQt" -I"debug" -I"..\..\..\..\mkspecs\win32-g++" -o debug\main.o main.cpp D:/Qt/2009.03/qt/bin\moc.exe -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I"..\..\..\..\include\QtCore" -I"..\..\..\..\include\QtGui" -I"..\..\..\..\include" -I"." -I"d:\MySQL\include" -I"..\..\..\sql\kernel" -I"..\..\..\..\include\ActiveQt" -I"debug" -I"..\..\..\..\mkspecs\win32-g++" -D__GNUC__ -DWIN32 ..\..\..\sql\drivers\mysql\qsql_mysql.cpp -o debug\qsql_mysql.moc g++ -c -g -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I"..\..\..\..\include\QtCore" -I"..\..\..\..\include\QtGui" -I"..\..\..\..\include" -I"." -I"d:\MySQL\include" -I"..\..\..\sql\kernel" -I"..\..\..\..\include\ActiveQt" -I"debug" -I"..\..\..\..\mkspecs\win32-g++" -o debug\qsql_mysql.o ..\..\..\sql\drivers\mysql\qsql_mysql.cpp ..\..\..\sql\drivers\mysql\qsql_mysql.cpp: In constructor `QMYSQLDriver::QMYSQLDriver(QObject*)': ..\..\..\sql\drivers\mysql\qsql_mysql.cpp:1092: warning: non-inline function 'QMYSQLDriver::QMYSQLDriver(QObject*)' is defined after prior declaration as dllimport: attribute ignored ..\..\..\sql\drivers\mysql\qsql_mysql.cpp: In constructor `QMYSQLDriver::QMYSQLDriver(MYSQL*, QObject*)': ..\..\..\sql\drivers\mysql\qsql_mysql.cpp:1104: warning: non-inline function 'QMYSQLDriver::QMYSQLDriver(MYSQL*, QObject*)' is defined after prior declaration as dllimport: attribute ignored ..\..\..\sql\drivers\mysql\qsql_mysql.cpp: At global scope: ..\..\..\sql\drivers\mysql\qsql_mysql.cpp:1122: warning: non-inline function 'void QMYSQLDriver::init()' is defined after prior declaration as dllimport: attribute ignored ..\..\..\sql\drivers\mysql\qsql_mysql.cpp:1122: warning: 'void QMYSQLDriver::init()' defined locally after being referenced with dllimport linkage ..\..\..\sql\drivers\mysql\qsql_mysql.cpp: In destructor `virtual QMYSQLDriver::~QMYSQLDriver()': ..\..\..\sql\drivers\mysql\qsql_mysql.cpp:1129: warning: non-inline function 'virtual QMYSQLDriver::~QMYSQLDriver()' is defined after prior declaration as dllimport: attribute ignored ..\..\..\sql\drivers\mysql\qsql_mysql.cpp: In member function `virtual bool QMYSQLDriver::hasFeature(QSqlDriver::DriverFeature) const': ..\..\..\sql\drivers\mysql\qsql_mysql.cpp:1137: warning: non-inline function 'virtual bool QMYSQLDriver::hasFeature(QSqlDriver::DriverFeature) const' is defined after prior declaration as dllimport: attribute ignored ..\..\..\sql\drivers\mysql\qsql_mysql.cpp: In member function `virtual bool QMYSQLDriver::open(const QString&, const QString&, const QString&, const QString&, int, const QString&)': ..\..\..\sql\drivers\mysql\qsql_mysql.cpp:1203: warning: non-inline function 'virtual bool QMYSQLDriver::open(const QString&, const QString&, const QString&, const QString&, int, const QString&)' is defined after prior declaration as dllimport: attribute ignored ..\..\..\sql\drivers\mysql\qsql_mysql.cpp: At global scope: ..\..\..\sql\drivers\mysql\qsql_mysql.cpp:1292: warning: non-inline function 'virtual void QMYSQLDriver::close()' is defined after prior declaration as dllimport: attribute ignored ..\..\..\sql\drivers\mysql\qsql_mysql.cpp: In member function `virtual QSqlResult* QMYSQLDriver::createResult() const': ..\..\..\sql\drivers\mysql\qsql_mysql.cpp:1305: warning: non-inline function 'virtual QSqlResult* QMYSQLDriver::createResult() const' is defined after prior declaration as dllimport: attribute ignored ..\..\..\sql\drivers\mysql\qsql_mysql.cpp: In member function `virtual QStringList QMYSQLDriver::tables(QSql::TableType) const': ..\..\..\sql\drivers\mysql\qsql_mysql.cpp:1310: warning: non-inline function 'virtual QStringList QMYSQLDriver::tables(QSql::TableType) const' is defined after prior declaration as dllimport: attribute ignored ..\..\..\sql\drivers\mysql\qsql_mysql.cpp: In member function `virtual QSqlIndex QMYSQLDriver::primaryIndex(const QString&) const': ..\..\..\sql\drivers\mysql\qsql_mysql.cpp:1333: warning: non-inline function 'virtual QSqlIndex QMYSQLDriver::primaryIndex(const QString&) const' is defined after prior declaration as dllimport: attribute ignored ..\..\..\sql\drivers\mysql\qsql_mysql.cpp: At global scope: ..\..\..\sql\drivers\mysql\qsql_mysql.cpp:1359: warning: non-inline function 'virtual QSqlRecord QMYSQLDriver::record(const QString&) const' is defined after prior declaration as dllimport: attribute ignored ..\..\..\sql\drivers\mysql\qsql_mysql.cpp: In member function `virtual QVariant QMYSQLDriver::handle() const': ..\..\..\sql\drivers\mysql\qsql_mysql.cpp:1375: warning: non-inline function 'virtual QVariant QMYSQLDriver::handle() const' is defined after prior declaration as dllimport: attribute ignored ..\..\..\sql\drivers\mysql\qsql_mysql.cpp: In member function `virtual bool QMYSQLDriver::beginTransaction()': ..\..\..\sql\drivers\mysql\qsql_mysql.cpp:1380: warning: non-inline function 'virtual bool QMYSQLDriver::beginTransaction()' is defined after prior declaration as dllimport: attribute ignored ..\..\..\sql\drivers\mysql\qsql_mysql.cpp: In member function `virtual bool QMYSQLDriver::commitTransaction()': ..\..\..\sql\drivers\mysql\qsql_mysql.cpp:1397: warning: non-inline function 'virtual bool QMYSQLDriver::commitTransaction()' is defined after prior declaration as dllimport: attribute ignored ..\..\..\sql\drivers\mysql\qsql_mysql.cpp: In member function `virtual bool QMYSQLDriver::rollbackTransaction()': ..\..\..\sql\drivers\mysql\qsql_mysql.cpp:1414: warning: non-inline function 'virtual bool QMYSQLDriver::rollbackTransaction()' is defined after prior declaration as dllimport: attribute ignored ..\..\..\sql\drivers\mysql\qsql_mysql.cpp: In member function `virtual QString QMYSQLDriver::formatValue(const QSqlField&, bool) const': ..\..\..\sql\drivers\mysql\qsql_mysql.cpp:1431: warning: non-inline function 'virtual QString QMYSQLDriver::formatValue(const QSqlField&, bool) const' is defined after prior declaration as dllimport: attribute ignored ..\..\..\sql\drivers\mysql\qsql_mysql.cpp: At global scope: ..\..\..\sql\drivers\mysql\qsql_mysql.cpp:1465: warning: non-inline function 'virtual QString QMYSQLDriver::escapeIdentifier(const QString&, QSqlDriver::IdentifierType) const' is defined after prior declaration as dllimport: attribute ignored In file included from ..\..\..\sql\drivers\mysql\qsql_mysql.cpp:1476: debug/qsql_mysql.moc:72:26: warning: no newline at end of file D:/Qt/2009.03/qt/bin\moc.exe -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I"..\..\..\..\include\QtCore" -I"..\..\..\..\include\QtGui" -I"..\..\..\..\include" -I"." -I"d:\MySQL\include" -I"..\..\..\sql\kernel" -I"..\..\..\..\include\ActiveQt" -I"debug" -I"..\..\..\..\mkspecs\win32-g++" -D__GNUC__ -DWIN32 ..\..\..\sql\drivers\mysql\qsql_mysql.h -o debug\moc_qsql_mysql.cpp g++ -c -g -frtti -fexceptions -mthreads -Wall -DUNICODE -DQT_LARGEFILE_SUPPORT -DQT_DLL -DQT_GUI_LIB -DQT_CORE_LIB -DQT_THREAD_SUPPORT -DQT_NEEDS_QMAIN -I"..\..\..\..\include\QtCore" -I"..\..\..\..\include\QtGui" -I"..\..\..\..\include" -I"." -I"d:\MySQL\include" -I"..\..\..\sql\kernel" -I"..\..\..\..\include\ActiveQt" -I"debug" -I"..\..\..\..\mkspecs\win32-g++" -o debug\moc_qsql_mysql.o debug\moc_qsql_mysql.cpp debug\moc_qsql_mysql.cpp:38: error: definition of static data member 'QMYSQLDriver::staticMetaObject' of dllimport'd class debug\moc_qsql_mysql.cpp:38: warning: 'QMYSQLDriver::staticMetaObject' defined locally after being referenced with dllimport linkage mingw32-make[1]: Leaving directory `D:/Qt/2009.03/qt/src/plugins/sqldrivers/mysql' mingw32-make: Leaving directory `D:/Qt/2009.03/qt/src/plugins/sqldrivers/mysql' mingw32-make[1]: *** [debug/moc_qsql_mysql.o] Error 1 mingw32-make: *** [debug] Error 2 Exited with code 2. Error while building project mysql When executing build step 'Make' Вот ошибка Цитировать D:/Qt/2009.03/qt/src/plugins/sqldrivers/mysql/debug/moc_qsql_mysql.cpp:38: error: definition of static data member 'QMYSQLDriver::staticMetaObject' of dllimport'd class Если так продолжится - уйду на C# или Java Помогите! Я уже винду снес и поставил по новой, чтобы он ODBC драйвер увидел. Теперь мускульный перестал видеть и не собирает, а у меня проект горит! Название: Re: QT + MySQL Отправлено: Rcus от Сентябрь 16, 2009, 09:38 Хм, в статье по ссылке ничего не говорится о редактировании .pro файла. Он теперь совсем не походит на то что в оригинале было.
Цитировать Если так продолжится - уйду на C# или Java /* испугался и открыл секреты решения всех проблем */Название: Re: QT + MySQL Отправлено: hamlo от Сентябрь 16, 2009, 09:40 Смысл всех изменений в статье сводится именно к этому...
Пока пойду опять перставлю QT опять... Нашел вот что http://qt.shamangrad.net/doku.php?id=%D0%B4%D1%80%D0%B0%D0%B9%D0%B2%D0%B5%D1%80%D1%8B_%D0%B1%D0%B0%D0%B7_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85_sql Но и те драйвера не видит! http://qt.shamangrad.net/lib/exe/fetch.php?media=drivers:mysql.rar ??? Название: Re: QT + MySQL Отправлено: hamlo от Сентябрь 16, 2009, 09:49 Дайте плз линк на драйвера для 4.5.2 Qt. Самый простой выход. Буду безмерно благодарен.
ЗЫ После сборки по инструкции опять эта ошибка, причем пробовал на 3-ех машинах. Название: Re: QT + MySQL Отправлено: Rcus от Сентябрь 16, 2009, 10:00 Самый простой выход это точно следовать инструкции и не править mysql.pro руками.
Удаление include(../qsqldriverbase.pri) привело в конечном счете к ошибке сборки /* здесь был абзац о том как именно это влияет, но он вырезан внутренним троллем */ Название: Re: QT + MySQL Отправлено: hamlo от Сентябрь 16, 2009, 10:04 qpluginbase.pri - на месте (но 1 уровень выше). Без изменения pro файла QT += sql или без включения к qmake "INCLUDEPATH+=D:\Qt\2009.03\qt\src\sql\kernel" получаем в консоль
Код: D:/Qt/2009.03/qt/src/plugins/sqldrivers/mysql/main.cpp:42: qsqldriverplugin.h: No such file or directory Если делать по шагам, то ткните меня носом, чт оя мог упустить в трех командах. Вот новая винда и вот я из SDK ставлю Qt. Качаю mingw-utils Добавляю в переменную path где она может найти qmake и mingw32-make (пути до папок qt и mingw в них папки bin). Добавляю путь до mingw-utils, чтобы виделось reimp.exe далее делаю reimp libmysql.lib (который получаю из установщика MySQL) для получения совместимого .a файла, требуемого для сборки либы для QT далее в Makefile (в директории сборки mysql driver %qtdir%/src/plugins/sqldrivers/mysql) добавляю пути (INCLUDEPATH +=) где можно найти заголовочный файлы mysql и путь непосредсвенно до самой .a библиотеки. Далее пытаюсь собрать с помощью mingw32-make -f Makefile (тот самый мейк фаил в котором указаны пути до заголовочных файлов и мускульная .a либа). Ясенно нигде не указано где искать заголовочные файлы QtSql модуля и получаем вышеприведенную ошибку. При попытке указать их расположение явно, получаем какую то тарабарщину... Все. Название: Re: QT + MySQL Отправлено: Rcus от Сентябрь 16, 2009, 10:12 Эм на каком месте? Он не включается напрямую в mysql.pro, а в qsqldriverbase.pri уже есть строка QT = core sql.
Название: Re: QT + MySQL Отправлено: hamlo от Сентябрь 16, 2009, 10:18 Выложите плз сборку мускульных дров для 4.4.2..... :'(
ЗЫ По вышеприведенной ссылке есть дрова для 4.3.4... оч не хочется решать все что связно с Qt какими то костылями и откатами до старых версий... Название: Re: QT + MySQL Отправлено: hamlo от Сентябрь 16, 2009, 10:43 Ппц... поставил SDK на диск C:/ Все собралось - но драйвера так и не видит... Это ваще логика где?
Название: Re: QT + MySQL Отправлено: hamlo от Сентябрь 16, 2009, 11:11 Ну да что же это за такое!
Код: C:\Qt\2009.03\qt\src\plugins\sqldrivers\mysql>mingw32-make install QMYSQL driver not loaded... ВЫВОД! Кадры из Троллтеха кладут в SDK исходники НЕ ТОЙ версию QT, которая поставляется в бинарном виде! Потому что после пересбора Qt мускульный драйвер видится, и пропадает, без пересборки ODBC. ЗЫ Я извиняюсь, но это чистой воды МУДАЧЕСТВО. Это за все мои страдания.. казлы млин и уроды... все заработало... Надеюсь, этот пост поможет ещё кому либо из новичков при использовании Qt из SDK, по крайней мере под виндой... Название: Re: QT + MySQL Отправлено: Rcus от Сентябрь 16, 2009, 11:41 Хм... интересные выводы. У меня аж один из логических блоков мозга закоротило.
Название: Re: QT + MySQL Отправлено: hamlo от Сентябрь 16, 2009, 11:52 Ну тогда почему мускульные дрова видятся только после пересборки 4.5.2 из исходников?
Название: Re: QT + MySQL Отправлено: Rcus от Сентябрь 16, 2009, 12:11 Ну обычно в таких случаях принято открыть справку и посмотреть что там написано. Вот хорошая причина может быть
Цитировать If you experience plugin load problems and see output like this: Интересно, там еще по ссылкам много всего.QSqlDatabase: QMYSQL driver not loaded QSqlDatabase: available drivers: QMYSQL The problem is usually that the plugin had the wrong build key. This might require removing an entry from the plugin cache. Here is some more plugin debugging info. Название: Re: QT + MySQL Отправлено: hamlo от Сентябрь 16, 2009, 13:13 Омг... а много ещё таких "сюрпризов" может быть? Типа "внутреннего идентификатора сборки"?
Название: Re: QT + MySQL Отправлено: Rcus от Сентябрь 16, 2009, 13:29 Конечно он есть :) Не надо страдать параноей - наслаждайтесь.
|