Russian Qt Forum

Qt => Базы данных => Тема начата: IGHOR от Октябрь 11, 2009, 01:18



Название: Помогите с Qt-static+mysql-static на Win7+Vs2005
Отправлено: IGHOR от Октябрь 11, 2009, 01:18
Собираю Qt4.5.2 для Vs2005,
configure -debug-and-release -static ... -qt-sql-mysql
все работает хорошо, получаю ехе без зависимостей,
но зависимость от libmysql.dll остаеться,
что сделать чтобы влинковать MYSQL статически в программу?
или где найти libmysql.lib для статической сборки?

Второй вопрос о shared сборке
нужно ли для работы с MySql оба ключа
-qt-sql-mysql
-plugin-sql-mysql
или только один из них?


Название: Re: Помогите с Qt-static+mysql-static на Win7+Vs2005
Отправлено: pastor от Октябрь 11, 2009, 11:11
нужно ли для работы с MySql оба ключа
-qt-sql-mysql
-plugin-sql-mysql

Это совершенно разные ключи, поэтому нужен только один из них.


Название: Re: Помогите с Qt-static+mysql-static на Win7+Vs2005
Отправлено: IGHOR от Октябрь 11, 2009, 13:26
pastor, если использовать -qt-sql-mysql то MySql будет работать как надо?
я делал два одновременно и все работало, можете сказать в чем разница?


Название: Re: Помогите с Qt-static+mysql-static на Win7+Vs2005
Отправлено: Sergey B. от Октябрь 11, 2009, 14:47
Код:
 -no-sql-<driver> ... Disable SQL <driver> entirely.
 -qt-sql-<driver> ... Enable a SQL <driver> in the Qt Library, by default
                      none are turned on.
 -plugin-sql-<driver> Enable SQL <driver> as a plugin to be linked to
                      at run time.

                      Possible values for <driver>:
                      [ db2 ibase mysql oci odbc psql sqlite sqlite2 tds ]


Название: Re: Помогите с Qt-static+mysql-static на Win7+Vs2005
Отправлено: IGHOR от Октябрь 11, 2009, 15:58
Sergey B., в смысле только -plugin-sql-<driver> можно использовать?

И по первому вопросу, как все-таки линковать libmysql статически?


Название: Re: Помогите с Qt-static+mysql-static на Win7+Vs2005
Отправлено: Sergey B. от Октябрь 11, 2009, 19:01
В режиме static нельзя использовать плагины.
Поэтому собираем с ключём
Код:
-qt-sql-mysql
тогда код для работы с mysql будет вкомпилирован в библиотеку qtsql.
Из-за этого появиться зависимость от библиотек mysql, если их не будет на компьютере юзера, программа не запустится (сообщит о не найденных библиотеках).
Если собирать в shared режиме, можно использовать плагины, собираем с ключём
Код:
 -plugin-sql-mysql
из-за этого зависимость при запуске от библиотек mysql появляться не будет, т.к. библиотека их загружает динамически, и если  даже на целевой машине, необходимых библиотек нет, программа запустится без всяких предупреждений, просто не сможет работать с бд mysql.





Название: Re: Помогите с Qt-static+mysql-static на Win7+Vs2005
Отправлено: Sergey B. от Октябрь 11, 2009, 19:08
Чтобы избавиться от dll совсем, можно попробовать собрать саму libmysql статически, и уже её скормить qt при сборке.
Я этого ни разу не делал, поэтому можно ли собрать libmysql статически, сказать не могу, но попробовать можно.


Название: Re: Помогите с Qt-static+mysql-static на Win7+Vs2005
Отправлено: IGHOR от Октябрь 11, 2009, 19:27
Sergey B., спасибо за объяснение.
"собрать саму libmysql статически" - логично, а где найти исходники?


Название: Re: Помогите с Qt-static+mysql-static на Win7+Vs2005
Отправлено: IGHOR от Октябрь 11, 2009, 19:57
в MySQL SDK есть такие файлы:
libmysql.dll
libmysql.lib
mysqlclient.lib
mysys-max.lib
mysys.lib
mysys_tls.lib
regex.lib
strings.lib
zlib.lib

может mysqlclient.lib это статически собранная та же библиотека libmysql.lib ?
если так то как настроить чтобы при сборке именно оно использовалось, переименовать что-ли?


Название: Re: Помогите с Qt-static+mysql-static на Win7+Vs2005
Отправлено: IGHOR от Октябрь 11, 2009, 20:04
Все работает, значит
libmysql.lib - динамическая библиотека
mysqlclient.lib - статическая

просто заменил libmysql.lib на mysqlclient.lib и все работает без зависимостей
Тема исчерпана