Russian Qt Forum

Qt => Установка, сборка, отладка, тестирование => Тема начата: DenKor от Август 18, 2005, 13:04



Название: Ошибка при компиляции плагина mysql
Отправлено: DenKor от Август 18, 2005, 13:04
У меня не получается собрать плагин для mysql под minigw32.
Привожу текст для версии 3.4.4
============================================
mingw32-make.exe[1]: Leaving directory `D:/Qt/3.3.4/plugins/src'
c:\dev-cpp\bin\..\lib\gcc\mingw32\3.4.2\..\..\..\..\mingw32\bin\ld.exe: cannot find -lmysql.lib
collect2: ld returned 1 exit status
mingw32-make.exe[3]: *** [..\..\..\sqldrivers\qsqlmysql.dll] Error 1
mingw32-make.exe[2]: *** [sub-mysql] Error 2
mingw32-make.exe[1]: *** [sub-sqldrivers] Error 2
mingw32-make.exe: *** [sub-plugins] Error 2
The build process failed!
=============================================

Заголовочные файлы скопировал в папку D:/Qt/3.3.4/include
Библиотеку libmysql.lib в папку D:/Qt/3.3.4/lib.
Обозвал ее как mysql.lib (там еще остался libmysql.lib)
Не помогает  :evil:
Версия MySQL - 4.1.13a-win32 (noinstall)


Название: Ошибка при компиляции плагина mysql
Отправлено: Admin от Август 18, 2005, 13:07
1. обзывать не надо

-lmysql.lib  означает что ищет libmysql.lib

2. есть ключик у gcc -Lпуть к твоей либе
посставь его правильно


Название: Ошибка при компиляции плагина mysql
Отправлено: jindos от Август 18, 2005, 13:15
А по моему не нужно расширение указывать: т.е. не -lmysql.lib , а -
 -lmysql


Название: Ошибка при компиляции плагина mysql
Отправлено: Admin от Август 18, 2005, 13:49
точно


Название: Ошибка при компиляции плагина mysql
Отправлено: DenKor от Август 18, 2005, 18:49
Покапавшись на форуме qtforum.org нашел следующее рабочее решение для MiniGW32 редакции Open Source.

Библиотека libmysql.lib, которая идет в комплекте с дистрибутивом MySQL подходит только для версии VC2003.
Для MiniGW нужно делать свою библиотеку:
1. Выполняем команду
dlltool --input-def libmySQL.def  --dllname libmySQL.dll --output-lib mysql.a -k
2. При сборке появяться сообщение о ненайденных прототипах вида
mysql_close@4
Правим libmySQL.def подставляя вместо mysql_close нужное mysql_close@4.
Выполняем данные действия для всех подобных прототипов, пока не будут выдаваться сообщения об ошибках линковки
3.Получаем правильную библиотеку mysql.a

4.Для редакции Open Source мне пришлось дополнительно править makefile, чтобы при сборке правильно находилась библиотека
Вместо параметра -lmysql.lib я поставил полный путь к mysql.a
LIBS        =        -L"F:\Qt\4.0.0\lib" -L"F:\Qt\4.0.0\lib"  F:\Qt\4.0.0\lib\mysql.a -lQtCored4 -lQtSqld4


Название: Ошибка при компиляции плагина mysql
Отправлено: Vadim от Сентябрь 01, 2005, 14:25
Цитата: "DenKor"
Покапавшись на форуме qtforum.org нашел следующее рабочее решение для MiniGW32 редакции Open Source.

Библиотека libmysql.lib, которая идет в комплекте с дистрибутивом MySQL подходит только для версии VC2003.
Для MiniGW нужно делать свою библиотеку:
1. Выполняем команду
dlltool --input-def libmySQL.def  --dllname libmySQL.dll --output-lib mysql.a -k

2. При сборке появяться сообщение о ненайденных прототипах вида
mysql_close@4
Правим libmySQL.def подставляя вместо mysql_close нужное mysql_close@4.
Выполняем данные действия для всех подобных прототипов, пока не будут выдаваться сообщения об ошибках линковки
3.Получаем правильную библиотеку mysql.a
4.Для редакции Open Source мне пришлось дополнительно править makefile, чтобы при сборке правильно находилась библиотека
Вместо параметра -lmysql.lib я поставил полный путь к mysql.a
LIBS        =        -L"F:\Qt\4.0.0\lib" -L"F:\Qt\4.0.0\lib"  F:\Qt\4.0.0\lib\mysql.a -lQtCored4 -lQtSqld4


Правильно наверное надо выполнить команду:
reimp libmysql.lib
В итоге получаем уже правильный(c поправлеными именами функций) libmysql.a
Обходимся и без правки makefile указывая в опциях configure
-sql-plugin-mysql -I <path-mysql>\include -L <path-mysql>\lib\libmysql.a
При таких опциях библиотека собирается и плагин mysql в том числе.
Но проекты упорно не хотят видеть плагин mysql. Когда компилил Qt под VC6 то в папке с исполняемым файлом создавал папочку sqldrivers и ложил туда плагины mysql - все работало. Но под mingw это не проходит. Кто-то поборол эту проблему?


Название: Ошибка при компиляции плагина mysql
Отправлено: crocus от Октябрь 05, 2005, 05:11
Так чем вопрос решили


Название: Ошибка при компиляции плагина mysql
Отправлено: DenKor от Октябрь 27, 2005, 14:41
Цитата: "Vadim"

При таких опциях библиотека собирается и плагин mysql в том числе.
Но проекты упорно не хотят видеть плагин mysql. Когда компилил Qt под VC6 то в папке с исполняемым файлом создавал папочку sqldrivers и ложил туда плагины mysql - все работало. Но под mingw это не проходит. Кто-то поборол эту проблему?

Я падчил распространяюмую библиотеку на предмет поиска всех путей
на путь в текущем каталоге.
Там в тектсе была зашита константа кажись sqldrivers c путем на установленную библиотеку. Заменил ее на "./"
Работает


Название: Ошибка при компиляции плагина mysql
Отправлено: BNN от Ноябрь 03, 2005, 09:12
пробую собрать плагин MySql для qt4.0.1.
выдается следующая ошибка:
C:\MinGW\bin\..\lib\gcc\mingw32\3.4.2\..\..\..\..\mingw32\bin\ld.exe: cannot find -lmysql.lib
collect2: ld returned 1 exit status
mingw32-make[1]: *** [..\..\..\..\plugins\sqldrivers\qsqlmysql.dll] Error 1
mingw32-make[1]: Leaving directory `C:/Qt/4.0.1/src/plugins/sqldrivers/mysql'
mingw32-make: *** [release] Error 2

Файл libmysql.lib в папке c:\qt\4.0.1\lib есть.
также там находятся lmysql.lib (копия libmysql.lib), libmysql.a.


Название: Ошибка при компиляции плагина mysql
Отправлено: Admin от Ноябрь 03, 2005, 10:25
попробую добавить
-Lc:\qt\4.0.1\lib


Название: Ошибка при компиляции плагина mysql
Отправлено: BNN от Ноябрь 03, 2005, 10:58
Цитата: "Admin"
попробую добавить
-Lc:\qt\4.0.1\lib


куда это добавитьjavascript:emoticon(':?:')
Question


Название: Ошибка при компиляции плагина mysql
Отправлено: Admin от Ноябрь 03, 2005, 13:18
как ключик к gcc


Название: Ошибка при компиляции плагина mysql
Отправлено: BNN от Ноябрь 03, 2005, 13:55
Сделал так:
Цитата: "DenKor"
Покапавшись на форуме qtforum.org нашел следующее рабочее решение для MiniGW32 редакции Open Source.

Библиотека libmysql.lib, которая идет в комплекте с дистрибутивом MySQL подходит только для версии VC2003.
Для MiniGW нужно делать свою библиотеку:
1. Выполняем команду
dlltool --input-def libmySQL.def  --dllname libmySQL.dll --output-lib mysql.a -k
2. При сборке появяться сообщение о ненайденных прототипах вида
mysql_close@4
Правим libmySQL.def подставляя вместо mysql_close нужное mysql_close@4.
Выполняем данные действия для всех подобных прототипов, пока не будут выдаваться сообщения об ошибках линковки
3.Получаем правильную библиотеку mysql.a

4.Для редакции Open Source мне пришлось дополнительно править makefile, чтобы при сборке правильно находилась библиотека
Вместо параметра -lmysql.lib я поставил полный путь к mysql.a
LIBS        =        -L"F:\Qt\4.0.0\lib" -L"F:\Qt\4.0.0\lib"  F:\Qt\4.0.0\lib\mysql.a -lQtCored4 -lQtSql
d4


муторно правда def файл ручками править. Но все работает (покрайней мере sqlbrowser конектится и базы видит) Щас со своей проги буду коннектится.
про reimp все пишут , а где взять -то. у мня в mingw ее нет :(


Название: Re: Ошибка при компиляции плагина mysql
Отправлено: VAPerlin от Ноябрь 20, 2008, 21:26
муторно правда def файл ручками править. Но все работает (покрайней мере sqlbrowser конектится и базы видит) Щас со своей проги буду коннектится.
про reimp все пишут , а где взять -то. у мня в mingw ее нет :(

В состав пакета MinGW входит, в частности, mingw-utils. Там оно и лежит. Нужно ее скачать и распаковать куда следует.


Название: Re: Ошибка при компиляции плагина mysql
Отправлено: Mpa4Hu от Февраль 17, 2011, 14:49
когда я делаю reimp libmysql.lib, ну или все остальные вариации, у меня libmysql.a создаетса 0 кб

помогите пожалуста, либо скажыте что не так делаю, либо просто подкинте этот файл, мне очень нужен этот файл под MinGW