Russian Qt Forum

Qt => Вопросы новичков => Тема начата: qwyllum от Апрель 11, 2013, 16:53



Название: Не получается скомпилировать драйвер MySQL
Отправлено: qwyllum от Апрель 11, 2013, 16:53
Пытаюсь скомпилировать следующим образом:

>cd C:\Qt\Qt5.0.1\5.0.1\src\qtbase\src\sql\

C:\Qt\Qt5.0.1\5.0.1\Src\qtbase\src\sql>qmake -o Makefile <INCLUDEPATH+=C:\MySQL\include> <LIBS+=C:\MySQL\lib\opt\libmysql.lib> sql.pro

Project MESSAGE: C:\Qt\Qt5.0.1\5.0.1\mingw47_32\bin\syncqt.bat -module QtSql -mk
specsdir C:\Qt\Qt5.0.1\5.0.1\mingw47_32/mkspecs -outdir C:/Qt/Qt5.0.1/5.0.1/Src/
qtbase C:/Qt/Qt5.0.1/5.0.1/Src/qtbase
"perl.exe" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.
Project ERROR: Failed to run: C:\Qt\Qt5.0.1\5.0.1\mingw47_32\bin\syncqt.bat -mod
ule QtSql -mkspecsdir C:\Qt\Qt5.0.1\5.0.1\mingw47_32/mkspecs -outdir C:/Qt/Qt5.0
.1/5.0.1/Src/qtbase C:/Qt/Qt5.0.1/5.0.1/Src/qtbase

----

Установил себе active perl, но результат не изменился. Пробовал найти уже скомпилированные драйвера. Скачал драйвера вроде qsqlmysql4.dll, закинул их все в папку sqldrivers в проект по мануалу вот этому http://buldin.org/?p=31. Также драйвер libmySQL.dll добавил в папку с приложением. Проверяю так:

Код:
 if (!QSqlDatabase::drivers().contains("QMYSQL"))
        QMessageBox::critical(0, "Unable to load database", "This program needs the MySQL driver");

Подскажите пожалуйста, что я не так делаю? Мне нужна поддержка MySQL. Обязательно ли для этого компилировать драйвер или можно скачать готовый? Как его подключить в таком случае???


Название: Re: Не получается скомпилировать драйвер MySQL
Отправлено: Alex Custov от Апрель 11, 2013, 17:12
Скачал драйвера вроде qsqlmysql4.dll

Это драйвер от Qt4, он не будет работать.

Установленный Perl в PATH есть?


Название: Re: Не получается скомпилировать драйвер MySQL
Отправлено: qwyllum от Апрель 11, 2013, 17:15
Установленный Perl в PATH есть?
Имя переменной: perl
Значение переменной: C:\Perl\site\bin;C:\Perl\bin;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;C:\strawberry\c\bin;C:\strawberry\perl\site\bin;C:\strawberry\perl\bin


Название: Re: Не получается скомпилировать драйвер MySQL
Отправлено: Alex Custov от Апрель 11, 2013, 17:22
ещё непонятно зачем угловые скобки в строке с qmake (<INCLUDEPATH+=....)


Название: Re: Не получается скомпилировать драйвер MySQL
Отправлено: Alex Custov от Апрель 11, 2013, 17:23
Установленный Perl в PATH есть?
Имя переменной: perl
Значение переменной: C:\Perl\site\bin;C:\Perl\bin;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;C:\strawberry\c\bin;C:\strawberry\perl\site\bin;C:\strawberry\perl\bin

И если ввести в консоли perl.exe, то он нормально запустится?


Название: Re: Не получается скомпилировать драйвер MySQL
Отправлено: qwyllum от Апрель 11, 2013, 19:06
И если ввести в консоли perl.exe, то он нормально запустится?
Если вводить в виндовской cmd - нормально
Если в Qt-шной - "perl.exe" не является внутренней или внешней командой, исполняемой программой или пакетным файлом.



Название: Re: Не получается скомпилировать драйвер MySQL
Отправлено: qwyllum от Апрель 11, 2013, 22:24
Хорошо, допустим я могу эти драйвера в интернете скачать и не заморачиваться с компиляцией?


Название: Re: Не получается скомпилировать драйвер MySQL
Отправлено: Alex Custov от Апрель 11, 2013, 22:25
Хорошо, допустим я могу эти драйвера в интернете скачать и не заморачиваться с компиляцией?

Да. Мажорная версия Qt и используемый компилятор должны совпадать.


Название: Re: Не получается скомпилировать драйвер MySQL
Отправлено: qwyllum от Апрель 11, 2013, 22:33

Да. Мажорная версия Qt и используемый компилятор должны совпадать.
Спасибо большое за ответ. Теперь я понимаю, почему скачанные драйвера не работают. Может кто-нибудь, кто успешно решил проблему компиляции поделится драйвером MySQL? У меня Qt 5.0.1 и mingw47_32.

Заранее огромное спасибо


Название: Re: Не получается скомпилировать драйвер MySQL
Отправлено: qwyllum от Апрель 12, 2013, 07:46
Пробовал собрать по инструкции вот так:

cd C:\Qt\Qt5.0.1\5.0.1\Src\qtbase\src\plugins\sqldrivers\mysql

>qmake -o Makefile "INCLUDEPATH+=C:\MySQL\include" "LIBS+=C:\MySQL\lib\opt\libmysql.lib" mysql.pro

никаких ошибок не выдается. но следующий шаг:

>nmake
"nmake" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.


Я уже в тупике если честно. Что я делаю не так?


Название: Re: Не получается скомпилировать драйвер MySQL
Отправлено: Bepec от Апрель 12, 2013, 07:59
nmake нужно набирать в командной строке VS. Пуск -> Microsoft VS -> tools-> command promt.

PS я удивлён очень сильно чтобы собрать нормальную библиотеку или ещё что под винду. необходимо танцы плясать :D


Название: Re: Не получается скомпилировать драйвер MySQL
Отправлено: qwyllum от Апрель 12, 2013, 11:50
nmake нужно набирать в командной строке VS. Пуск -> Microsoft VS -> tools-> command promt.

PS я удивлён очень сильно чтобы собрать нормальную библиотеку или ещё что под винду. необходимо танцы плясать :D
Прошу прощения, значит я не так понял ситуацию. У меня установлен Qt 5.0.1 вместе с Qt creator и mingw47_32.

Я пробовал уже по нескольким мануалам и даже скачивал драйвера, которые уже кто-то до меня скомпилировал, но то ли версии не подошли то ли еще что-то, но не могу заставить работать программу. Мне выдается:

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


Название: Re: Не получается скомпилировать драйвер MySQL
Отправлено: qwyllum от Апрель 12, 2013, 11:56
Пробовал делать по мануалу http://www.doc.crossplatform.ru/qt/4.3.2/sql-driver.html

Цитата: Если вы используете компилятор не от Microsoft, замените nmake на make.

Результат:
>make
"make" не является внутренней или внешней командой, исполняемой программой или пакетным файлом.

Такое ощущение, что мой ноутбук проклят >_____<


Название: Re: Не получается скомпилировать драйвер MySQL
Отправлено: Bepec от Апрель 12, 2013, 12:07
Такое ощущение, что у вас не прописаны переменные окружения :D


Название: Re: Не получается скомпилировать драйвер MySQL
Отправлено: Alex Custov от Апрель 12, 2013, 13:16
Цитата: Если вы используете компилятор не от Microsoft, замените nmake на make.
щущение, что мой ноутбук проклят >_____<

Эти мануалописатели вообще не заморачиваются особенностями. В случае с mingw команда будет mingw32-make. В PATH, естественно, mingw должен быть.


Название: Re: Не получается скомпилировать драйвер MySQL
Отправлено: qwyllum от Апрель 12, 2013, 14:24
Эти мануалописатели вообще не заморачиваются особенностями. В случае с mingw команда будет mingw32-make. В PATH, естественно, mingw должен быть.
Огромное спасибо Вам!!! Ситуация определенно сдвинулась с мертвой точки.

Я исправил незачащие ошибки сам - например, пути к файлам отличались от тех, где искал компилятор, но я просто скопировал файлы вручную и ошибки исчезли. Но теперь выдает это:

ql -LC:\Qt\Qt5.0.1\5.0.1\mingw47_32\lib -lQt5Core.obj/release_shared/qsql_mysql.o:qsql_mysql.cpp:(.text+0x1ce): undefined reference to `mysql_stmt_insert_id@4'.obj/release_shared/qsql_mysql.o:qsql_mysql.cpp:(.text+0x209): undefined referen
ce to `mysql_insert_id@4'.obj/release_shared/qsql_mysql.o:qsql_mysql.cpp:(.text+0x26c): undefined reference to `mysql_num_rows@4'

и так далее еще добрых 30 строчек

Я уже если честно не знаю, что и делать.

Ребята, у кого Qt 5.0.1 & mingw47_32 пожалуйста поделитесь DLL-кой. Я из-за косяка с компиляцией не могу сдать работу - у меня все сделано под SQlite. Выручите пожалуйста


Название: Re: Не получается скомпилировать драйвер MySQL
Отправлено: alex312 от Апрель 12, 2013, 14:59
если тебе не критичен компилятор, то переходи на msvc2010.


Название: Re: Не получается скомпилировать драйвер MySQL
Отправлено: qwyllum от Апрель 12, 2013, 15:18
если тебе не критичен компилятор, то переходи на msvc2010.
У меня просто диплом заказали и я делал его в Qt creator, поэтому о переходе подумаю, но работу эту надо тут доделать.


Название: Re: Не получается скомпилировать драйвер MySQL
Отправлено: alex312 от Апрель 12, 2013, 16:00
Так есть же Qt5 скомпилированный msvc2010.
Надо будет установить или win32 SDK или VisualStudo Express и сооствествующую сборку Qt


Название: Re: Не получается скомпилировать драйвер MySQL
Отправлено: qwyllum от Апрель 12, 2013, 16:12
Так есть же Qt5 скомпилированный msvc2010.
Надо будет установить или win32 SDK или VisualStudo Express и сооствествующую сборку Qt
тогда последний вопрос - а как там редактировать формы Qt? Есть средства вроде Qt Designer?

И решится ли там вопрос с драйвером с MySQL из-за которого весь сыр-бор?


Название: Re: Не получается скомпилировать драйвер MySQL
Отправлено: alex312 от Апрель 12, 2013, 16:17
И решится ли там вопрос с драйвером с MySQL из-за которого весь сыр-бор?
должет :)

тогда последний вопрос - а как там редактировать формы Qt? Есть средства вроде Qt Designer?
Qt Desigber и QtCreator можно использовать с разными версиями Qt


Название: Re: Не получается скомпилировать драйвер MySQL
Отправлено: qwyllum от Апрель 12, 2013, 18:08
Так есть же Qt5 скомпилированный msvc2010.
Надо будет установить или win32 SDK или VisualStudo Express и сооствествующую сборку Qt
Прошу прощения, я уточню http://www.cyberforum.ru/qt/thread340639.html - вот так надо настраивать?

Visual Studio 2010 я уже скачал


Название: Re: Не получается скомпилировать драйвер MySQL
Отправлено: alex312 от Апрель 12, 2013, 18:19
Прошу прощения, я уточню http://www.cyberforum.ru/qt/thread340639.html - вот так надо настраивать?
1 C официального сайта http://qt-project.org/downloads качаеш версию Qt 5.0.2 for Windows 32-bit (VS 2010, 485 MB).
2 Устанавливаеш.
3 Пользуешся.
4 ? ? ?
5 PROFIT


Название: Re: Не получается скомпилировать драйвер MySQL
Отправлено: qwyllum от Апрель 13, 2013, 11:55
1 C официального сайта http://qt-project.org/downloads качаеш версию Qt 5.0.2 for Windows 32-bit (VS 2010, 485 MB).
2 Устанавливаеш.
3 Пользуешся.
4 ? ? ?
5 PROFIT

Скачал и установил VS
Установил Qt for windows
Установил QT VS add-in

В настройках VS в меню Qt->Qt options указал path C:\Qt5\5.0.2\msvs2010\

Компилю приложение - все получается, но по-прежнему выдает надпись о том, что MYSQL драйвер отсутствует
Код:
 if (!QSqlDatabase::drivers().contains("QMYSQL"))
    {
        QMessageBox::critical(0, "Driver pipec", "This program needs the MySQL driver");
    }


Название: Re: Не получается скомпилировать драйвер MySQL
Отправлено: Mikhail от Апрель 13, 2013, 13:17
Ну а драйвер Qt для MySQL ты все таки откомпилировал или как?


Название: Re: Не получается скомпилировать драйвер MySQL
Отправлено: qwyllum от Апрель 13, 2013, 14:47
Ну а драйвер Qt для MySQL ты все таки откомпилировал или как?
Так а разве для VS они не идут сразу скомпилированные?


Название: Re: Не получается скомпилировать драйвер MySQL
Отправлено: qwyllum от Апрель 13, 2013, 15:11
Пробовал скомпилить так:

открываю командную строку VS

set QTDIR=c:\qt5\5.0.2\
set path=%path%;%QTDIR%\msvc2010\bin
cd c:\qt5\5.0.2\
configure -mp -nomake examples -nomake demos -no-qt3support

Выдает:
C:\Qt5\5.0.2>configure -mp -nomake examples -nomake demos -no-qt3support
"configure" не является внутренней или внешней командой, исполняемой программой или пакетным файлом.


Название: Re: Не получается скомпилировать драйвер MySQL
Отправлено: Mikhail от Апрель 13, 2013, 15:42
Скорее всего они не откомпилированы.
Посмотри наличие dll в имени которой есть mysql в каталоге plugins/sqldrivers.


Название: Re: Не получается скомпилировать драйвер MySQL
Отправлено: Mikhail от Апрель 13, 2013, 15:47
Да и еще заметь что у тебя нет configure. configure есть в исходниках Qt. Я бы рекомендовал скачать исходники Qt.
И спокойно откомпилировать себе Qt с нужными теде опциями. В том числе и с поддержкой MySQL. В readme все прекрасно описано.


Название: Re: Не получается скомпилировать драйвер MySQL
Отправлено: qwyllum от Апрель 13, 2013, 20:51
Да и еще заметь что у тебя нет configure. configure есть в исходниках Qt. Я бы рекомендовал скачать исходники Qt.
И спокойно откомпилировать себе Qt с нужными теде опциями. В том числе и с поддержкой MySQL. В readme все прекрасно описано.

Компилирую теперь так:

set QTDIR=c:\qt5\5.0.2\
path=%path%;%QTDIR%\msvc2010\bin


в path сваливаю все библиотеки MySQL

cd C:\Qt5\5.0.2\Src\qtbase
configure -mp -qt-sql-mysql -no-opengl -no-openvg


все нормально конфигурируется

nmake

после этого минут 10 что-то хрустит и вот что выдает в итоге:

   Создается библиотека ..\..\lib\Qt5Sqld.lib и объект ..\..\lib\Qt5Sqld.exp
qsqldatabase.obj : error LNK2001: неразрешенный внешний символ ""public: static
struct QMetaObject const QMYSQLDriver::staticMetaObject" (?staticMetaObject@QMYS
QLDriver@@2UQMetaObject@@B)"
qsqldatabase.obj : error LNK2019: ссылка на неразрешенный внешний символ "public
: __thiscall QMYSQLDriver::QMYSQLDriver(class QObject *)" (??0QMYSQLDriver@@QAE@
PAVQObject@@@Z) в функции "public: void __thiscall QMYSQLDriver::`default constr
uctor closure'(void)" (??_FQMYSQLDriver@@QAEXXZ)
..\..\lib\Qt5Sqld.dll : fatal error LNK1120: 2 неразрешенных внешних элементов
NMAKE : fatal error U1077: "C:\Program Files\Microsoft Visual Studio 10.0\VC\BIN
\link.EXE" : возвращенный код "0x460"
Stop.
NMAKE : fatal error U1077: "C:\Program Files\Microsoft Visual Studio 10.0\VC\BIN
\nmake.exe" : возвращенный код "0x2"
Stop.
NMAKE : fatal error U1077: cd : возвращенный код "0x2"
Stop.
NMAKE : fatal error U1077: cd : возвращенный код "0x2"
Stop.


честно, я уже даже не знаю, что еще можно сделать


Название: Re: Не получается скомпилировать драйвер MySQL
Отправлено: Mikhail от Апрель 13, 2013, 22:05
А указать включаемые файды MySQL не забыл?
 


Название: Re: Не получается скомпилировать драйвер MySQL
Отправлено: alex312 от Апрель 13, 2013, 22:25
Инструкция с картинками - https://docs.google.com/document/d/13JP-nhMTLGLGEY5ECRZEsHrGoi2oe82gMi_XJ0pcLZY/edit?usp=sharing


Название: Re: Не получается скомпилировать драйвер MySQL
Отправлено: qwyllum от Апрель 14, 2013, 09:28
Инструкция с картинками - https://docs.google.com/document/d/13JP-nhMTLGLGEY5ECRZEsHrGoi2oe82gMi_XJ0pcLZY/edit?usp=sharing

Огромное Вам спасибо!!!! Все наконец-то заработало.

Я от безысходности даже в техподдержку вконтакте написал))

(http://s2.ipicture.ru/uploads/20130414/Aseui2Mg.jpg) (http://s2.ipicture.ru/)


Название: Re: Не получается скомпилировать драйвер MySQL
Отправлено: magoldnew от Апрель 27, 2013, 16:25
Решение есть тут http://seppemagiels.com/blog/create-mysql-driver-qt5-windows (http://seppemagiels.com/blog/create-mysql-driver-qt5-windows), я и под 5.0.1 сделал и под 5.0.2, mysql 5.6.10, 5.0.1 уже удалил, другие могу выслать.


Название: Re: Не получается скомпилировать драйвер MySQL
Отправлено: Doranych от Июль 18, 2013, 13:25
У меня возникли те же проблемы. Я установил Qt 5.1.0 и попытался сделать тоже самое, что написано здесь (https://docs.google.com/document/d/13JP-nhMTLGLGEY5ECRZEsHrGoi2oe82gMi_XJ0pcLZY/edit).
Однако компилятор все равно ругается на  отсутствие mysql.h.

Может кто подскажет, где его можно достать и положить в нужную папку?