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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Помогите с Qt-static+mysql-static на Win7+Vs2005  (Прочитано 8474 раз)
IGHOR
Крякер
****
Offline Offline

Сообщений: 390



Просмотр профиля WWW
« : Октябрь 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
или только один из них?
Записан
pastor
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 2901



Просмотр профиля WWW
« Ответ #1 : Октябрь 11, 2009, 11:11 »

нужно ли для работы с MySql оба ключа
-qt-sql-mysql
-plugin-sql-mysql

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

Integrated Computer Solutions, Inc. (ICS)
http://www.ics.com/
IGHOR
Крякер
****
Offline Offline

Сообщений: 390



Просмотр профиля WWW
« Ответ #2 : Октябрь 11, 2009, 13:26 »

pastor, если использовать -qt-sql-mysql то MySql будет работать как надо?
я делал два одновременно и все работало, можете сказать в чем разница?
Записан
Sergey B.
Программист
*****
Offline Offline

Сообщений: 544



Просмотр профиля WWW
« Ответ #3 : Октябрь 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 ]
Записан
IGHOR
Крякер
****
Offline Offline

Сообщений: 390



Просмотр профиля WWW
« Ответ #4 : Октябрь 11, 2009, 15:58 »

Sergey B., в смысле только -plugin-sql-<driver> можно использовать?

И по первому вопросу, как все-таки линковать libmysql статически?
Записан
Sergey B.
Программист
*****
Offline Offline

Сообщений: 544



Просмотр профиля WWW
« Ответ #5 : Октябрь 11, 2009, 19:01 »

В режиме static нельзя использовать плагины.
Поэтому собираем с ключём
Код:
-qt-sql-mysql
тогда код для работы с mysql будет вкомпилирован в библиотеку qtsql.
Из-за этого появиться зависимость от библиотек mysql, если их не будет на компьютере юзера, программа не запустится (сообщит о не найденных библиотеках).
Если собирать в shared режиме, можно использовать плагины, собираем с ключём
Код:
 -plugin-sql-mysql
из-за этого зависимость при запуске от библиотек mysql появляться не будет, т.к. библиотека их загружает динамически, и если  даже на целевой машине, необходимых библиотек нет, программа запустится без всяких предупреждений, просто не сможет работать с бд mysql.



« Последнее редактирование: Октябрь 11, 2009, 19:04 от Sergey B. » Записан
Sergey B.
Программист
*****
Offline Offline

Сообщений: 544



Просмотр профиля WWW
« Ответ #6 : Октябрь 11, 2009, 19:08 »

Чтобы избавиться от dll совсем, можно попробовать собрать саму libmysql статически, и уже её скормить qt при сборке.
Я этого ни разу не делал, поэтому можно ли собрать libmysql статически, сказать не могу, но попробовать можно.
Записан
IGHOR
Крякер
****
Offline Offline

Сообщений: 390



Просмотр профиля WWW
« Ответ #7 : Октябрь 11, 2009, 19:27 »

Sergey B., спасибо за объяснение.
"собрать саму libmysql статически" - логично, а где найти исходники?
Записан
IGHOR
Крякер
****
Offline Offline

Сообщений: 390



Просмотр профиля WWW
« Ответ #8 : Октябрь 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 ?
если так то как настроить чтобы при сборке именно оно использовалось, переименовать что-ли?
Записан
IGHOR
Крякер
****
Offline Offline

Сообщений: 390



Просмотр профиля WWW
« Ответ #9 : Октябрь 11, 2009, 20:04 »

Все работает, значит
libmysql.lib - динамическая библиотека
mysqlclient.lib - статическая

просто заменил libmysql.lib на mysqlclient.lib и все работает без зависимостей
Тема исчерпана
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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