Russian Qt Forum
Ноябрь 22, 2024, 13:57 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Ошибка при компиляции плагина mysql  (Прочитано 16259 раз)
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)
Записан
Admin
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1988



Просмотр профиля
« Ответ #1 : Август 18, 2005, 13:07 »

1. обзывать не надо

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

2. есть ключик у gcc -Lпуть к твоей либе
посставь его правильно
Записан
jindos
Гость
« Ответ #2 : Август 18, 2005, 13:15 »

А по моему не нужно расширение указывать: т.е. не -lmysql.lib , а -
 -lmysql
Записан
Admin
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1988



Просмотр профиля
« Ответ #3 : Август 18, 2005, 13:49 »

точно
Записан
DenKor
Гость
« Ответ #4 : Август 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
Записан
Vadim
Гость
« Ответ #5 : Сентябрь 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 это не проходит. Кто-то поборол эту проблему?
Записан
crocus
Гость
« Ответ #6 : Октябрь 05, 2005, 05:11 »

Так чем вопрос решили
Записан
DenKor
Гость
« Ответ #7 : Октябрь 27, 2005, 14:41 »

Цитата: "Vadim"

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

Я падчил распространяюмую библиотеку на предмет поиска всех путей
на путь в текущем каталоге.
Там в тектсе была зашита константа кажись sqldrivers c путем на установленную библиотеку. Заменил ее на "./"
Работает
Записан
BNN
Гость
« Ответ #8 : Ноябрь 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.
Записан
Admin
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1988



Просмотр профиля
« Ответ #9 : Ноябрь 03, 2005, 10:25 »

попробую добавить
-Lc:\qt\4.0.1\lib
Записан
BNN
Гость
« Ответ #10 : Ноябрь 03, 2005, 10:58 »

Цитата: "Admin"
попробую добавить
-Lc:\qt\4.0.1\lib


куда это добавитьjavascript:emoticon(':?:')
Question
Записан
Admin
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1988



Просмотр профиля
« Ответ #11 : Ноябрь 03, 2005, 13:18 »

как ключик к gcc
Записан
BNN
Гость
« Ответ #12 : Ноябрь 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 ее нет Грустный
Записан
VAPerlin
Гость
« Ответ #13 : Ноябрь 20, 2008, 21:26 »

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

В состав пакета MinGW входит, в частности, mingw-utils. Там оно и лежит. Нужно ее скачать и распаковать куда следует.
Записан
Mpa4Hu
Гость
« Ответ #14 : Февраль 17, 2011, 14:49 »

когда я делаю reimp libmysql.lib, ну или все остальные вариации, у меня libmysql.a создаетса 0 кб

помогите пожалуста, либо скажыте что не так делаю, либо просто подкинте этот файл, мне очень нужен этот файл под MinGW
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.053 секунд. Запросов: 23.