Russian Qt Forum
Июнь 15, 2024, 23:33 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Сборка MySQL плагина в Qt 4.1.0  (Прочитано 5978 раз)
bob
Гость
« : Январь 21, 2006, 20:40 »

Пытаюсь собрать плагин для MySQL и получаю ошибку
Код:

C:\MinGW\bin\..\lib\gcc\mingw32\3.4.2\..\..\..\..\mingw32\bin\ld.exe: cannot find -lc:\mysql\lib\opt\libmysql.a
collect2: ld returned 1 exit status
mingw32-make[1]: *** [..\..\..\..\plugins\sqldrivers\qsqlmysqld.dll] Error 1
mingw32-make[1]: Leaving directory `C:/Qt/4.1.0/src/plugins/sqldrivers/mysql'
mingw32-make: *** [debug-all] Error 2
Записан
Admin
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1988



Просмотр профиля
« Ответ #1 : Январь 22, 2006, 15:01 »

компилятор не может найти mysql libs
Записан
SLiDER
Гость
« Ответ #2 : Январь 22, 2006, 16:35 »

Цитата: "bob"
Пытаюсь собрать плагин для MySQL и получаю ошибку


Последние версии MySQL официально не поддерживают сборку под MinGW и соответственно нужной вам библиотеки, в соответствующем формате в поставке нет. Придется сделать ее самому. Примерно так:
Код:
This is a small HOWTO, explaining on how to convert the MySQL libraries
to something which is usable with MinGW.

1) Go to the MySQL lib directory:

   # cd <path_where_mysql_is_installed>\lib\opt

2) Produce a DEF file:

   # pexports libmysql.dll | sed "s/^_//" > libmysql.def

   *NOTE: pexports and sed come with MinGW utilities and msys.

3) Create the MinGW import library:

   # dlltool -U -d libmysql.def -l libmysql.lib.a

At this moment, a MinGW compatible library libmysql.lib.a is created.
But, the headers are still written this way they are using the M$
calling convention. We need to change this.

4) Open the header <path_where_mysql_is_installed>\include\mysql.h
   and change the following around line 44:

   Change:

   #define STDCALL __stdcall

   into:

   #undef  STDCALL
   #define STDCALL

*NOTE: The following is more a hack instead of a solution.
       Maybe you can come up with a cleaner patch.
       Use some extra #ifdef's or something ...

Now, we will build the Qt MySQL plugin using MinGW.

5) Go to the Qt MySQL plugin source directory:

   # cd <path_where_qt_is_installed>\src\plugins\sqldrivers\mysql

6) Launch qmake to generate the Makefile

   # qmake -o Makefile
"INCLUDEPATH+=<path_where_mysql_is_installed>\include"
     "LIBS+=-L<path_where_mysql_is_installed>\lib\opt" mysql.pro

7) Build the plugin

   # make


PS: I have tried the above for MySQL 4.1 (4.1.12a) and OpenSource Win32 Qt4.


Данный способ был обнаружен на каком-то буржуйском форуме и принадлежит некоему Bert Wizzy. Сам этим пользовался. Работает. Но от MySQL теперь уже, по разным причинам, отказались, в пользу Postgre.
Записан
Nikol
Гость
« Ответ #3 : Март 21, 2006, 23:44 »

угу так и есть, только мне надо было из команды

dlltool -U -d libmysql.def -l libmysql.lib.a

-U убрать потому что -U добавляет "_" перед функциями в qtmysql.dll(вроде так если название не спутал чуть), а в libMysql.dll эти функции без подчеркивания, ну и соответственно их не находит.

я собирал Qt4.1.0+MySql4.1.16a+MinGW3.4.2
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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