![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
MissJones |
![]()
Сообщение
#1
|
Новичок Группа: Новичок Сообщений: 1 Регистрация: 21.5.2009 Пользователь №: 765 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Здравствуйте. возникла такая ситуация: при сборке плагина следующими командами
C:\Qt\4.4.3\src\plugins\sqldrivers\mysql>qmake -o Makefile "INCLUDEPATH+=C:\Mysql\include" "LIBS+=C:\Mysql\lib\opt\libmysql.lib" mysql.pro make в итоге выдает сообщение: C:/Qt/4.4.3/src/plugins/sqldrivers/mysql/../../../sql/drivers/mysql/qsql_mysql.c pp:1377: undefined reference to `mysql_query@8' tmp/obj/debug_shared/qsql_mysql.o(.text+0x8a0a): In function `ZNK12QMYSQLDriver1 1formatValueERK9QSqlFieldb': C:/Qt/4.4.3/src/plugins/sqldrivers/mysql/../../../sql/drivers/mysql/qsql_mysql.c pp:1402: undefined reference to `mysql_real_escape_string@16' collect2: ld returned 1 exit status mingw32-make[1]: *** [..\..\..\..\plugins\sqldrivers\qsqlmysqld4.dll] Error 1 mingw32-make[1]: Leaving directory `C:/Qt/4.4.3/src/plugins/sqldrivers/mysql' mingw32-make: *** [debug-all] Error 2 подскажите, пожалуйста, что не так и как разрешить данную проблему |
|
|
![]() |
igor_bogomolov |
![]()
Сообщение
#2
|
Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 1215 Регистрация: 22.3.2009 Из: Саратов Пользователь №: 630 Спасибо сказали: 235 раз(а) Репутация: ![]() ![]() ![]() |
MissJones, пользуйся поиском по форуму. Тама поднималась много раз.
драйвер MySQL Qt и mySQL, непонятки при компиляции самой либы с поддержкой mySQL. |
|
|
rrmini |
![]()
Сообщение
#3
|
Студент ![]() Группа: Участник Сообщений: 41 Регистрация: 23.11.2009 Пользователь №: 1251 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
доброго времени суток!
Никак не получается собрать qtmysql. Делаю следующее: cd %QTDIR%\src\plugins\sqldrivers\mysql qmake -o Makefile “INCLUDEPATH+=C:\MySQL\include” “LIBS+=C:\MySQL\lib\opt\libmysql.lib” mysql.pro мускул установлен в c:\MySQL затем: mingw32-make выдает следующую ошибку: in file included from main.cpp:44: ../../../sql/drivers/mysq/qsql_mysql.h:52:19: mysql.h: No such file or directory ну и т.д. Вопрос: как это исправить? пробовал править в qsql_mysql.h строку #include <mysql.h> на #include <C:\MySQL\include\mysql.h> но тоже ничего хорошего не вышло. и что-то мне подсказывает , это не совсем правильный способ. спасибо! |
|
|
Litkevich Yuriy |
![]()
Сообщение
#4
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
rrmini |
![]()
Сообщение
#5
|
Студент ![]() Группа: Участник Сообщений: 41 Регистрация: 23.11.2009 Пользователь №: 1251 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
rrmini |
![]()
Сообщение
#6
|
Студент ![]() Группа: Участник Сообщений: 41 Регистрация: 23.11.2009 Пользователь №: 1251 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
добавил(скопировал) в c:\MinGW\include из c:\MySQL\include:
mysql.h mysql_com.h mysql_version.h my_alloc.h mysql_time.h my_list.h теперь после make следующее: c:\MinGW\bin\..\lib\gcc\mingw32\3.4.5\..\..\..\..\mingw32\bin\ld.exe: cannot find -llibmysql ну и т.д. не соображу теперь какой файл мне нужно скопировать и куда ? |
|
|
DEADHUNT |
![]()
Сообщение
#7
|
Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 430 Регистрация: 15.4.2009 Пользователь №: 686 Спасибо сказали: 26 раз(а) Репутация: ![]() ![]() ![]() |
попробуй -llibmysql замени на -lmysql (ld сам добавляет префикс lib для опции -lXXX).
также попробуй линкеру явно указать путь где лежит libmysql.a (-Lpath_to_libmysql_a) |
|
|
rrmini |
![]()
Сообщение
#8
|
Студент ![]() Группа: Участник Сообщений: 41 Регистрация: 23.11.2009 Пользователь №: 1251 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
DEADHUNT |
![]()
Сообщение
#9
|
Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 430 Регистрация: 15.4.2009 Пользователь №: 686 Спасибо сказали: 26 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
rrmini |
![]()
Сообщение
#10
|
Студент ![]() Группа: Участник Сообщений: 41 Регистрация: 23.11.2009 Пользователь №: 1251 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
DEADHUNT |
![]()
Сообщение
#11
|
Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 430 Регистрация: 15.4.2009 Пользователь №: 686 Спасибо сказали: 26 раз(а) Репутация: ![]() ![]() ![]() |
а как ты драйвер mysql собирал, статически или динамически?
если ты собрал его, то где то должен быть *.a или *.so или *.dll или *.lib. если не собрал, то собирай. Сообщение отредактировал DEADHUNT - 26.8.2010, 0:33 |
|
|
Litkevich Yuriy |
![]()
Сообщение
#12
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
rrmini |
![]()
Сообщение
#13
|
Студент ![]() Группа: Участник Сообщений: 41 Регистрация: 23.11.2009 Пользователь №: 1251 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
если не собрал, то собирай. дак он его и не может собрать.rrmini, посмотри в Makefile.debug и Makefile.release первые строчки переменную INCPATH в ней должен быть путь к заголовочникам MySQL'я. А в переменной LIBS должен быть путь и имя библиотеки (lib) в папке C:\Qt\4.6.3\src\plugins\sqldrivers\mysql makefile.debug INCPATH = -I"..\..\..\..\include\QtCore" -I"..\..\..\..\include\QtSql" -I"..\..\..\..\include" -I"..\..\..\..\include\ActiveQt" -I"tmp\moc\debug_shared" -I"..\..\..\..\mkspecs\win32-g++" в makefile.relaese INCPATH = -I"..\..\..\..\include\QtCore" -I"..\..\..\..\include\QtSql" -I"..\..\..\..\include" -I"..\..\..\..\include\ActiveQt" -I"tmp\moc\release_shared" -I"..\..\..\..\mkspecs\win32-g++" похоже нету пути к заголовкам мускуля |
|
|
DEADHUNT |
![]()
Сообщение
#14
|
Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 430 Регистрация: 15.4.2009 Пользователь №: 686 Спасибо сказали: 26 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
rrmini |
![]()
Сообщение
#15
|
Студент ![]() Группа: Участник Сообщений: 41 Регистрация: 23.11.2009 Пользователь №: 1251 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
похоже нету пути к заголовкам мускуля добавь в INCPATH -Ipath_to_mysql_headers -I"C:\MySQL\include" так ? -I"..\..\..\..\..\MySQL\include" или так ? какой вариант правильный ? добавил в конец строки через пробел -I"C:\MySQL\include" теперь после make clean затем make : C:\MinGW\bin\..\lib\gcc\mingw32\3.4.5\..\..\..\..\mingw32\bin\ld.exe: cannot find -llibmysql ну и т.д. отвлеченный вопрос : есть какой-нибудь способ копировать вывод компилятора в командной строке, чтобы затем вставлять в сообщения на форуме? |
|
|
DEADHUNT |
![]()
Сообщение
#16
|
Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 430 Регистрация: 15.4.2009 Пользователь №: 686 Спасибо сказали: 26 раз(а) Репутация: ![]() ![]() ![]() |
а почему у тебя при сборке драйвера mysql требуется libmysql, ты не делал в PRO файле что-то типа QTPLUGIN += qmysql
отвлеченный вопрос : есть какой-нибудь способ копировать вывод компилятора в командной строке, чтобы затем вставлять в сообщения на форуме? make 2> test.txt (перенаправить stderr в test.txt) в линуксе можно выделить как в текстовом редакторе и скопировать. |
|
|
rrmini |
![]()
Сообщение
#17
|
Студент ![]() Группа: Участник Сообщений: 41 Регистрация: 23.11.2009 Пользователь №: 1251 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
make 2> test.txt (перенаправить stderr в test.txt) в линуксе можно выделить как в текстовом редакторе и скопировать. в линуксе действительно все проще и работает с пол тычка. установил creator там тоже консольный вывод есть и копировать можно. в pro фале ничего не менял, он же был уже после установки qt qt устанавливал qt-win-opensource-4.6.3-mingw |
|
|
Litkevich Yuriy |
![]()
Сообщение
#18
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
похоже нету пути к заголовкам мускуля стал быть qmake не был выполнен нормально. Т.е. так:
Если всё же, ты заходил в каталог %QTDIR%\src\plugins\sqldrivers\mysql и командовал там именно такой qmake. То могу предложить лишь, сделать make distclean в выше указанном каталоге и проверить, чтобы удалились make-файлы А затем снова в этом же каталоге скомандовал тот же самый qmake, должны появиться make-файлы. П.С. что-то меня напрягают кавычки, не правильные они Вот у тебя: “ и ” А у меня: " и " |
|
|
rrmini |
![]()
Сообщение
#19
|
Студент ![]() Группа: Участник Сообщений: 41 Регистрация: 23.11.2009 Пользователь №: 1251 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
похоже нету пути к заголовкам мускуля стал быть qmake не был выполнен нормально. Т.е. так:
Если всё же, ты заходил в каталог %QTDIR%\src\plugins\sqldrivers\mysql и командовал там именно такой qmake. То могу предложить лишь, сделать make distclean в выше указанном каталоге и проверить, чтобы удалились make-файлы А затем снова в этом же каталоге скомандовал тот же самый qmake, должны появиться make-файлы. П.С. что-то меня напрягают кавычки, не правильные они Вот у тебя: “ и ” А у меня: " и " Великий человек Litkevich Yuriy! Все сделал, как ты сказал. И команды ручками забил, и кавычки правильные поставил. Все получилось. Спасибо три раза !!! |
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 12.6.2025, 18:31 |