crossplatform.ru

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

MissJones
  опции профиля:
сообщение 21.5.2009, 19:15
Сообщение #1


Новичок


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

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




Репутация:   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


подскажите, пожалуйста, что не так и как разрешить данную проблему
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
2 страниц V   1 2 >  
Начать новую тему
Ответов (1 - 18)
igor_bogomolov
  опции профиля:
сообщение 21.5.2009, 19:29
Сообщение #2


Профессионал
*****

Группа: Сомодератор
Сообщений: 1215
Регистрация: 22.3.2009
Из: Саратов
Пользователь №: 630

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




Репутация:   29  


MissJones, пользуйся поиском по форуму. Тама поднималась много раз.

драйвер MySQL
Qt и mySQL, непонятки при компиляции самой либы с поддержкой mySQL.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
rrmini
  опции профиля:
сообщение 25.8.2010, 17:31
Сообщение #3


Студент
*

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

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




Репутация:   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
  опции профиля:
сообщение 25.8.2010, 18:17
Сообщение #4


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

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

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




Репутация:   94  


Цитата(rrmini @ 25.8.2010, 21:31) *
mysql.h: No such file or directory
файл точно существует в каталоге C:\MySQL\include
?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
rrmini
  опции профиля:
сообщение 25.8.2010, 18:42
Сообщение #5


Студент
*

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

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




Репутация:   0  


Цитата(Litkevich Yuriy @ 25.8.2010, 19:17) *
Цитата(rrmini @ 25.8.2010, 21:31) *
mysql.h: No such file or directory
файл точно существует в каталоге C:\MySQL\include
?

сам видел 33КБ весит
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
rrmini
  опции профиля:
сообщение 25.8.2010, 22:44
Сообщение #6


Студент
*

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

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




Репутация:   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
  опции профиля:
сообщение 25.8.2010, 22:48
Сообщение #7


Активный участник
***

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

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




Репутация:   2  


попробуй -llibmysql замени на -lmysql (ld сам добавляет префикс lib для опции -lXXX).
также попробуй линкеру явно указать путь где лежит libmysql.a (-Lpath_to_libmysql_a)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
rrmini
  опции профиля:
сообщение 25.8.2010, 23:06
Сообщение #8


Студент
*

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

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




Репутация:   0  


Цитата(DEADHUNT @ 25.8.2010, 23:48) *
попробуй -llibmysql замени на -lmysql (ld сам добавляет префикс lib для опции -lXXX).
также попробуй линкеру явно указать путь где лежит libmysql.a (-Lpath_to_libmysql_a)

не совсем понял что на что заменить, поиск файла lmysql результата не дал.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
DEADHUNT
  опции профиля:
сообщение 25.8.2010, 23:29
Сообщение #9


Активный участник
***

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

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




Репутация:   2  


Цитата(rrmini @ 26.8.2010, 0:06) *
не совсем понял что на что заменить, поиск файла lmysql результата не дал.

libmysql.a надо искать.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
rrmini
  опции профиля:
сообщение 26.8.2010, 0:23
Сообщение #10


Студент
*

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

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




Репутация:   0  


Цитата(DEADHUNT @ 26.8.2010, 0:29) *
Цитата(rrmini @ 26.8.2010, 0:06) *
не совсем понял что на что заменить, поиск файла lmysql результата не дал.

libmysql.a надо искать.

нет такого файла
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
DEADHUNT
  опции профиля:
сообщение 26.8.2010, 0:33
Сообщение #11


Активный участник
***

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

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




Репутация:   2  


а как ты драйвер mysql собирал, статически или динамически?
если ты собрал его, то где то должен быть *.a или *.so или *.dll или *.lib.
если не собрал, то собирай.

Сообщение отредактировал DEADHUNT - 26.8.2010, 0:33
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 26.8.2010, 6:22
Сообщение #12


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

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

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




Репутация:   94  


Цитата(DEADHUNT @ 26.8.2010, 4:33) *
если не собрал, то собирай.
дак он его и не может собрать.

rrmini, посмотри в Makefile.debug и Makefile.release первые строчки переменную INCPATH в ней должен быть путь к заголовочникам MySQL'я.
А в переменной LIBS должен быть путь и имя библиотеки (lib)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
rrmini
  опции профиля:
сообщение 26.8.2010, 13:32
Сообщение #13


Студент
*

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

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




Репутация:   0  


Цитата(Litkevich Yuriy @ 26.8.2010, 7:22) *
Цитата(DEADHUNT @ 26.8.2010, 4:33) *
если не собрал, то собирай.
дак он его и не может собрать.

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
  опции профиля:
сообщение 26.8.2010, 13:38
Сообщение #14


Активный участник
***

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

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




Репутация:   2  


Цитата(rrmini @ 26.8.2010, 14:32) *
похоже нету пути к заголовкам мускуля

добавь в INCPATH -Ipath_to_mysql_headers
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
rrmini
  опции профиля:
сообщение 26.8.2010, 14:18
Сообщение #15


Студент
*

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

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




Репутация:   0  


Цитата(DEADHUNT @ 26.8.2010, 14:38) *
Цитата(rrmini @ 26.8.2010, 14:32) *
похоже нету пути к заголовкам мускуля

добавь в 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
  опции профиля:
сообщение 26.8.2010, 14:48
Сообщение #16


Активный участник
***

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

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




Репутация:   2  


а почему у тебя при сборке драйвера mysql требуется libmysql, ты не делал в PRO файле что-то типа QTPLUGIN += qmysql
Цитата(rrmini @ 26.8.2010, 15:18) *
отвлеченный вопрос : есть какой-нибудь способ копировать вывод компилятора в командной строке, чтобы затем вставлять в сообщения на форуме?

make 2> test.txt (перенаправить stderr в test.txt)
в линуксе можно выделить как в текстовом редакторе и скопировать.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
rrmini
  опции профиля:
сообщение 26.8.2010, 15:08
Сообщение #17


Студент
*

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

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




Репутация:   0  


Цитата(DEADHUNT @ 26.8.2010, 15:48) *
make 2> test.txt (перенаправить stderr в test.txt)
в линуксе можно выделить как в текстовом редакторе и скопировать.

в линуксе действительно все проще и работает с пол тычка.
установил creator там тоже консольный вывод есть и копировать можно.

в pro фале ничего не менял, он же был уже после установки qt

qt устанавливал qt-win-opensource-4.6.3-mingw
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 26.8.2010, 20:49
Сообщение #18


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

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

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




Репутация:   94  


Цитата(rrmini @ 26.8.2010, 17:32) *
похоже нету пути к заголовкам мускуля
стал быть qmake не был выполнен нормально. Т.е. так:
cd %QTDIR%\src\plugins\sqldrivers\mysql
qmake -o Makefile “INCLUDEPATH+=C:\MySQL\include” “LIBS+=C:\MySQL\lib\opt\libmysql.lib” mysql.pro

Если всё же, ты заходил в каталог %QTDIR%\src\plugins\sqldrivers\mysql и командовал там именно такой qmake. То могу предложить лишь, сделать
make distclean
в выше указанном каталоге и проверить, чтобы удалились make-файлы
А затем снова в этом же каталоге скомандовал тот же самый qmake, должны появиться make-файлы.

П.С.
что-то меня напрягают кавычки, не правильные они
Вот у тебя: “ и ”
А у меня: " и "
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
rrmini
  опции профиля:
сообщение 27.8.2010, 8:30
Сообщение #19


Студент
*

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

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




Репутация:   0  


Цитата(Litkevich Yuriy @ 26.8.2010, 21:49) *
Цитата(rrmini @ 26.8.2010, 17:32) *
похоже нету пути к заголовкам мускуля
стал быть qmake не был выполнен нормально. Т.е. так:
cd %QTDIR%\src\plugins\sqldrivers\mysql
qmake -o Makefile “INCLUDEPATH+=C:\MySQL\include” “LIBS+=C:\MySQL\lib\opt\libmysql.lib” mysql.pro

Если всё же, ты заходил в каталог %QTDIR%\src\plugins\sqldrivers\mysql и командовал там именно такой qmake. То могу предложить лишь, сделать
make distclean
в выше указанном каталоге и проверить, чтобы удалились make-файлы
А затем снова в этом же каталоге скомандовал тот же самый qmake, должны появиться make-файлы.

П.С.
что-то меня напрягают кавычки, не правильные они
Вот у тебя: “ и ”
А у меня: " и "

Великий человек Litkevich Yuriy!
Все сделал, как ты сказал. И команды ручками забил, и кавычки правильные поставил.
Все получилось.
Спасибо три раза !!!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 12.6.2025, 18:31