crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

3 страниц V   1 2 3 >  
Ответить в данную темуНачать новую тему
> Создание dll-библиотеки, со статически подлинко-, ванными стадартными Qt-библиотеками
Гость_Гость_evg123_*_*
сообщение 7.6.2010, 19:55
Сообщение #1





Гости








    


Вопрос простой - как убрать зависимости в проектируемой dll- библиотеке от стандартных библиотек (не хочется их таскать с собой и отдавать конечному пользователю). Пока решение не нашёл. Сделал статическую версию Qt (4.5.2), но как только выдаю, что хочу создать dll-библиотеку, то линковщик создаёт эту библиотеку с динамической компановкой со стандартными (типа QtCore.dll). Можкт кто с этим сталкивался и знает, как обойти эту проблему. Получается, что если создаю приложение - то туда всё статически динкуется, а если - dll-блилиотеку - то статически туда ничего подлинковываться не хочет.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Iron Bug
  опции профиля:
сообщение 7.6.2010, 21:52
Сообщение #2


Профессионал
*****

Группа: Модератор
Сообщений: 1611
Регистрация: 6.2.2009
Из: Yekaterinburg
Пользователь №: 533

Спасибо сказали: 219 раз(а)




Репутация:   12  


каким компилером собираешь?

вообще, у msvc есть флаг для этой цели - типа, линковать всё на уровне функций. вроде бы /Gy, но надо проверить, я могу неправильно помнить, а венда у меня только на работе. завтра уточню, если что.
однако, не факт, что всё так просто окажется с QT. я с ней дел не имела, а у неё дофига связей торчит наружу.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 7.6.2010, 23:13
Сообщение #3


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(Гость_Гость_evg123_*_* @ 7.6.2010, 23:55) *
Сделал статическую версию Qt (4.5.2), но как только выдаю, что хочу создать dll-библиотеку, то линковщик создаёт эту библиотеку с динамической компановкой со стандартными (типа QtCore.dll)
это вообще звучит как фантастическая повесть. Т.к. нельзя слинковать динамически из-за отсутствия динамических библиотек Qt.

Что-то делается категорически не верно.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_Гость_evg123_*_*
сообщение 8.6.2010, 19:36
Сообщение #4





Гости








    


Цитата(Iron Bug @ 7.6.2010, 21:52) *
каким компилером собираешь...


Мингвином, но есть вариант и под 2008-ую студию.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 8.6.2010, 19:42
Сообщение #5


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


evg123, расскажи подробнее, как ты делаешь библиотеку. Как выглядит pro-файл
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_Гость_evg123_*_*
сообщение 8.6.2010, 19:45
Сообщение #6





Гости








    


Цитата(Litkevich Yuriy @ 7.6.2010, 23:13) *
Что-то делается категорически не верно.

Ничего такого сврхестественного. Борланд элементарно компилираует дээльэльки со всеми своими потрахами внутри. Нужно указать только один флаг и всё. Хочу то же и в Qt. Могу же я статически собрать приложение! Почему я не могу так же собрать часть приложения в виде дээльэльки тоже слинковав всё не с динамическими, а со статическими библиотеками, которые есть в достатке? Что касается внешних связей от Qt-шных дэдэльэлек - то они обращаются только к системным виндовым либам. и всё тут. Ничего дополнительного не надо. Ведь все программы динамически слинкованы в комплекте с qt-шными dll-библиотеками и мингвиновским довеском отдично работают везде, ничего больше не требуя
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_Гость_evg123_*_*
сообщение 8.6.2010, 19:56
Сообщение #7





Гости








    


Цитата(Litkevich Yuriy @ 8.6.2010, 19:42) *
evg123, расскажи подробнее, как ты делаешь библиотеку. Как выглядит pro-файл

На работе этот *.pro . Сегодня там не работал интернет, поэтому сейчас смог ответить только из дома. Но завтра (на крайняк вечером) - выложу. (Суть в том, что создаю TEMPLATE = lib, использую статическую библиотеку, но пишу CONFIG = dll. Далее, пишу ещё LIB = <путь>/QtCore4.a и процесс компановки проходит замечательно, но создаётся dll c динамическими связями к QtCore4.dll . Если же не писать LIB = <путь>/QtCore4.a , то тогда возникает куча неразрешённых ссылок. Так что какую-то роль всё-таки эта строка LIB = <путь>/QtCore4.a -играет)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Iron Bug
  опции профиля:
сообщение 8.6.2010, 20:02
Сообщение #8


Профессионал
*****

Группа: Модератор
Сообщений: 1611
Регистрация: 6.2.2009
Из: Yekaterinburg
Пользователь №: 533

Спасибо сказали: 219 раз(а)




Репутация:   12  


да, я вот тоже полагаю, что любые сорцы можно компилить как угодно. и статически, и динамически. но с мингвином дел не имела, так что не знаю. это надо курить маны. а в 2008 можно попробовать /Gy, как я писала выше. по-моему, больше ничего не надо особо, если я правильно помню. ибо мне как-то тоже надо было собрать независимую ни от чего библиотеку и я долго ковыряла всякие опции компилера.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 8.6.2010, 20:03
Сообщение #9


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(Гость_Гость_evg123_*_* @ 8.6.2010, 23:45) *
Борланд элементарно компилираует дээльэльки со всеми своими потрахами внутри
у Борланада свой способ у Qt свой.
Для сборки статической версии приложения/dll'ки. Нужно линковать проект со статически собранной Qt. Если Qt собрана статически, то никогда не получится динамическая сборка. В этом-то и дело. Значит у тебя с проектом линкуется не та сборка Qt, раз ты получаешь не статически собранную dll'ку.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_Гость_evg123_*_*
сообщение 8.6.2010, 20:04
Сообщение #10





Гости








    


Дело в том, что я имел стандартный Qt, который шёл с QtCreator-ом. Там изначально всё было с динамическими библиотеками. Потом я сделал копию Qt и собрал его под мингвином с опцией configure -static ; mingw32-make. Храню эту копию у себя на случай того, чтобы делать статические приложения. и они по ходу делаются без проблем. Большие по размеру, и вполне статически слинкованные. Теперь то же хотел сделать и с Dll - но ничего подобного. Наверное те родные dll - ки, что остались после копирования Qt - мешают? Может их попробовать удалить? Но не запорчу ли я этим что-либо важное?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

3 страниц V   1 2 3 >
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 1.12.2024, 20:53